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

cru*_*ore 43 linux bash

不知何故,在某些时候,我不小心在我的主目录中创建了一个名为'-s'的文件.它大约500 kb,我不知道它是否包含重要数据.我无法想办法对这个文件做任何事情,因为我用来尝试查看,复制或移动它的每个命令都会将文件名解释为参数.

我试过把它放在引号中,用反斜杠转义它,两者结合,似乎没什么用.

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

Mic*_*ker 73

您可以参考它使用./-filename或某些命令将允许您在双击之后放置它:

rm -- -filename
Run Code Online (Sandbox Code Playgroud)

  • 当然!无法相信我没想到添加文件名的路径.现在我觉得更傻了:-) (4认同)

pax*_*blo 15

你可以用以下方法摆脱它:

rm ./-s
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

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