【问题标题】:How to remove a file whose name starts with '-' [duplicate]如何删除名称以“-”开头的文件 [重复]
【发布时间】:2014-03-29 16:25:09
【问题描述】:

在脚本中出现错误后,我最终得到了一个名称以破折号开头的文件,-:

-myfile.txt

到目前为止我试过了:

rm -myfile.txt
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

rm "-myfile.txt"
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

rm "\-myfile.txt"
rm: \-myfile.txt: No such file or directory

rm \-myfile.txt
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

rm "-"myfile.txt
rm: illegal option -- m
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

如何删除此文件?

【问题讨论】:

  • 常见问题解答rm -- filename
  • 可能重复 herehere
  • 感谢@ajp15243。搜索的时候没找到

标签: bash shell unix rm


【解决方案1】:

感谢@ajp15243: 答案是:

rm ./-myfile.txt

rm -- -myfile.txt

【讨论】:

  • 我认为 devnull 的 -- 答案也值得称赞:)。如果这就是解决问题的方法,我们鼓励您接受您对自己问题的回答。它会将问题标记为已解决,以便下一个通过 SO 搜索答案的人。
  • 当然,但是感谢您的帖子,我实际上理解了他的意思! (我可以在 2 天内接受我的回答!)
【解决方案2】:

您可以随时尝试 inode 解决方案:

$ ls -al -i | grep me
2116530 -rw-rw-r--  1 user123 user123       0 Feb 27 12:39 me

2116530 是文件的inode。然后你可以使用 find 删除它

find ./ -inum 2116530 --delete

甚至

find ./ -inum 2116530 -exec rm {\} \;

【讨论】:

    【解决方案3】:

    使用绝对路径名

    喜欢 rm /home/name/-myfile.txt

    【讨论】:

      【解决方案4】:

      试试这个 把你的文件名放在“-” 例如: rm "-myfile.txt"

      【讨论】: