【问题标题】:How to delete file whose name begins with "--"? [duplicate]如何删除名称以“--”开头的文件? [复制]
【发布时间】:2024-10-20 08:20:02
【问题描述】:

我不小心创建了一个名为“--address=16.187.249.27”的文件,并尝试以下方法删除它,但没有成功:

$ rm "--address=16.187.249.27"
rm: unrecognized option '--address=16.187.249.27'
Try 'rm ./'--address=16.187.249.27'' to remove the file ‘--address=16.187.249.27’.
Try 'rm --help' for more information.

$ rm "\--address=16.187.249.27"
rm: cannot remove ‘\\--address=16.187.249.27’: No such file or directory

如何删除以“--”开头的文件?

【问题讨论】:

  • rm -- yourfilename
  • rm 也很有帮助,可以准确地告诉你如何删除你的文件。

标签: linux bash shell unix rm


【解决方案1】:

有多个选项可以删除这样的文件:

rm ./--address\=16.187.249.27
rm "./--address=16.187.249.27"
rm './--address=16.187.249.27'
rm -- --address=16.187.249.27
find -maxdepth 1 -name "--address=16.187.249.27" -delete

【讨论】:

  • 最后一个将递归到子目录中,并删除您可能希望保留的具有该名称的每个文件 :-)
  • @EmilVikström 已修复,谢谢
【解决方案2】:

来自手册页

注意 rm 命令使用 getopt(3) 来解析它的参数,这允许它接受-- 选项,这将导致它停止 此时处理标志选项。这将允许删除 以破折号 (`-') 开头的文件名。

 For example:
       rm -- -filename

使用绝对或相对路径引用可以获得相同的行为。

 For example:
       rm /home/user/-filename
       rm ./-filename

所以你可以通过运行删除

rm -- --address=16.187.249.27

【讨论】:

    【解决方案3】:

    -- 的单个实例添加到您的命令行意味着后面的所有内容都是文件名而不是标志参数。所以应该这样做:

    rm -- --address=16.187.249.27
    

    【讨论】:

      最近更新 更多