繁体   English   中英

如何处理以连字符 (-) 字符开头的文件名?

[英]How do I deal with a filename that starts with the hyphen (-) character?

不知何故,在某些时候,我不小心在我的主目录中创建了一个名为“-s”的文件。 它大约 500 kb,我不知道它是否包含重要数据。 我想不出任何方法来处理这个文件,因为我用来尝试查看、复制或移动它的每个命令都将文件名解释为一个参数。

我试过把它放在引号里,用反斜杠转义,两者的结合,似乎没有任何效果。

另外,当我第一次向我的同事提出这个问题时,我们困惑了一会儿,直到最后有人无意中听到并问“你为什么不直接重命名它?” 在我向他解释 cp 和 mv 都认为文件名是一个参数所以它不起作用之后,他说“不,不是从命令行,而是从 Gnome 执行。” 我羞怯地听从了他的建议,而且奏效了。 但是,如果您没有窗口管理器并且命令行是唯一的选择,我仍然对如何解决这个困境感兴趣。

您可以使用./-filename来引用它,或者某些命令允许您将它放在双破折号之后:

rm -- -filename

您可以通过以下方式摆脱它:

rm ./-s

rm命令(至少在 Ubuntu 10.04 下)甚至会告诉你:

pax@pax-desktop:~$ rm -w
rm: invalid option -- 'w'
Try `rm ./-w' to remove the file `-w'.
Try `rm --help' for more information.

有效的原因是rm认为它不是一个选项(因为它不以-开头),但它仍然指的是当前目录中的特定文件。

您可以使用--,例如:

rm -- -file

除了使用rm ,如果你懂一门语言,你也可以使用它们。 他们不受这种壳疣的影响。

红宝石(1.9+)

$ ruby -rfileutils -e 'FileUtils.rm("-s")'

或者

$ ruby -e 'File.unlink("-s")'

只是为了好玩,您还可以使用/滥用查找。

find . -name "-s" -delete

或者

find . -name "-s" -exec cat {} \;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM