如何删除名称以“-”(连字符又名破折号或减号)开头的文件?

如何删除名称以“-”(连字符又名破折号或减号)开头的文件?

如何删除文件名以破折号(连字符或减号)开头的文件-?我通过 ssh 连接到远程 OSX 服务器,并且我的目录中有此文件:

tohru:~ $ ls -l
total 8
-rw-r--r--    1 me  staff  1352 Aug 18 14:33 --help
...

我究竟如何--help从 CLI 中删除?我有时会以不同的形式遇到这个问题,这些文件很容易创建,但很难摆脱。

我尝试过使用反斜杠

rm \-\-help

我尝试过引用

rm "--help"

如何防止减号(破折号或连字符)字符被解释为选项?

答案1

使用“--”使 rm 停止解析命令行选项,如下所示:

rm -- --help

答案2

或者你可以这样做

rm ./--help

答案3

使用find来做到这一点:

find . -name '--help' -delete

这是一个很好的方法,因为如果您有多个这样的文件可以删除,您只需先运行 find(不带该选项)即可获得文件的预览列表-delete,然后如果文件列表看起来不错,只需运行再次与-delete.

事实上,你避免rm赞成find(尤其是先预览)是一个好习惯,它将帮助你避免错误,rm *有一天不可避免地会咬你一口。

但请注意,该 find 将递归遍历所有子目录,因此您可能希望使用子目录深度约束来运行它,如下所示:

find . -maxdepth 1 -name '--help' -delete

这将查找限制为当前目录。

答案4

一个残酷的解决方案:

perl -e "unlink '--help' or die 'Could not unlink.';"

perl -e "rmdir '-d' or die 'Could not rmdir.';"

相关内容