如何处理以连字符(-)开头的文件名?[关闭]
- 2024-10-12 10:28:00
- admin 原创
- 80
问题描述:
不知何故,在某个时候,我意外地在主目录中创建了一个名为“-s”的文件。它大约有 500 kb,我不知道它是否包含重要数据。我无法想出任何方法来处理这个文件,因为我用来尝试查看、复制或移动它的每个命令都会将文件名解释为参数。
我尝试过将它放在引号中,用反斜杠将其转义,或者两者结合,但似乎都没有效果。
此外,当我第一次向同事提出这个问题时,我们困惑了好一阵子,直到最后有人无意中听到并问道:“你为什么不直接重命名它?”在我向他解释 cp 和 mv 都认为文件名是一个参数,所以它不起作用之后,他说:“不,不是从命令行,而是从 Gnome 执行。”我羞怯地听从了他的建议,结果成功了。然而,我仍然想知道,如果你没有窗口管理器,命令行是唯一的选择,你将如何解决这个难题。
解决方案 1:
您可以使用它来引用它./-filename
,或者某些命令允许您将其放在双破折号后面:
rm -- -filename
解决方案 2:
你可以用以下方法摆脱它:
rm ./-s
该rm
命令(至少在 Ubuntu 10.04 下)甚至会告诉您这样的:
pax@pax-desktop:~$ rm -w
rm: invalid option -- 'w'
Try `rm ./-w' to remove the file `-w'.
Try `rm --help' for more information.
其有效的原因是因为rm
认为这不是一个选项(因为它不是以 开头)但它仍然指的是当前目录中的-
特定文件。
解决方案 3:
您可以使用--,例如:
rm -- -file
解决方案 4:
只是为了好玩,你也可以使用/滥用 find。
find . -name "-s" -delete
或者
find . -name "-s" -exec cat {} ;
解决方案 5:
除了使用rm
,如果你懂一门语言,你也可以使用它们。它们不受此类 shell 缺陷的影响。
Ruby(1.9+)
$ ruby -rfileutils -e 'FileUtils.rm("-s")'
或者
$ ruby -e 'File.unlink("-s")'
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD