我无意中在主目录中创建了一个名为的文件-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.
有没有办法删除该文件而不删除整个目录?
答案1
有很多方法可以做到这一点:
对于许多程序(包括)来说,使用
--
它来表示选项标志的结束和参数列表的开始。rm
rm -- -r
使用完整路径
rm /home/you/directory/-r
或者,从同一目录(您的当前目录称为
.
):rm ./-r
使用
find
find . -name "-r" -exec rm {} \;
或者,获取所有这些文件
find . -name "-*" -exec rm {} \;
使用一个丑陋的黑客。将所有内容移至不同的目录(
-r
由于与此相同的原因,此操作将导致文件失败rm
),然后删除原始目录(这将删除文件)并将所有内容移回原处。因此,假设您的-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
答案2
--
在这种情况下,您必须在命令参数中使用双破折号 ( )。
它的目的是告诉命令,后面的内容不应作为命令的参数,而应作为简单的输入。在R M,文件或目录名称。
因此输入rm -- -r
后你就可以删除这个文件。
答案3
您还可以使用以下命令删除此类文件(以‘-’开头):
rm ./-r
参见 rm 手册页:
要删除名称以“-”开头的文件(例如“-foo”),请使用以下命令之一:
rm -- -foo rm ./-foo
答案4
或者您可以在命令中指定目录的完整路径rm
,
例子:
rm -rf ~/Desktop/-r