如何删除文件名以破折号(连字符或减号)开头的文件-
?我通过 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.';"