无法删除名称类似于命令参数的文件

无法删除名称类似于命令参数的文件

我无意中在主目录中创建了一个名为的文件-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

有很多方法可以做到这一点:

  1. 对于许多程序(包括)来说,使用--它来表示选项标志的结束和参数列表的开始。rm

    rm -- -r
    
  2. 使用完整路径

    rm /home/you/directory/-r
    

    或者,从同一目录(您的当前目录称为.):

    rm ./-r
    
  3. 使用find

    find . -name "-r" -exec rm {} \;
    

    或者,获取所有这些文件

    find . -name "-*" -exec rm {} \;
    
  4. 使用一个丑陋的黑客。将所有内容移至不同的目录(-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

相关内容