无法删除名称类似命令参数的文件
我无意中在我的主目录中创建了一个名为-r
的文件。 现在我无法摆脱它:
rm -rf rm: missing operand Try 'rm --help' for more information.
其他尝试:
rm /-/r rm: cannot remove '/-/r': No such file or directory
另一个:
rm \-r rm: missing operand Try 'rm --help' for more information.
有没有办法删除这个文件而不删除整个目录?
在这种情况下,您必须在命令参数中使用双短划线( --
)。
它的目的是告诉命令,不必将后面的内容作为命令的参数,而是简单的输入。 在rm的情况下,文件或目录名称。
所以输入rm -- -r
你应该摆脱这个文件。
有很多方法可以做到这一点:
-
使用
--
表示选项标志的结束和许多程序(包括rm
)的参数列表的开头。rm -- -r
-
使用完整路径
rm /home/you/directory/-r
或者,从同一目录(您当前的目录称为
.
):rm ./-r
-
使用
find
find . -name "-r" -exec rm {} \;
或者,获取所有这些文件
find . -name "-*" -exec rm {} \;
-
使用丑陋的黑客。 将所有内容移动到另一个目录(由于与
rm
相同的原因,这将导致-r
文件失败)然后删除原始目录(将删除文件)并再次移回所有内容。 所以,假设你的-r
文件在~/foo
:$ mkdir ~/bar $ for f in *; do mv "$f" ../bar/; done mv: invalid option -- 'r' Try 'mv --help' for more information. $ rm -rf ~/foo $ mkdir ~/foo && cd ~/foo $ mv ~/bar/* . $ rmdir ~/bar
您还可以使用以下命令删除此类文件(以“ – ”开头):
rm ./-r
请参见rm手册页:
要删除名称以“ – ”开头的文件,例如“-foo”,请使用以下命令之一:
rm -- -foo rm ./-foo
或者您可以在rm
命令中指定目录的完整路径,
例:
rm -rf ~/Desktop/-r
您也可以使用unlink命令(如果有的话),它不带任何选项,也可以使用单个参数。 因此, unlink -- -r
将删除名为-r
的文件