如何删除名为“\”的文件或目录?

Nos*_*tap 22 linux unix rm ubuntu

我在 Ubuntu 机器上使用终端,我想删除一个文件。文件名是\(只是一个反斜杠)。

现在通常我会做

rm filename
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,rm \它会认为我正在尝试编写多行命令。

我怎样才能删除这个文件?我知道我可以只使用 GUI 文件系统,但这不是很有效。

那么,如何删除(在终端中)一个名为\?

Hen*_*nes 50

使用rm \\(用另一个反斜杠转义反斜杠)。请注意,对于命名的目录\(使用rmdir, 或rm带有-r标志),这也同样适用。

例子:

>mkdir 演示
>cd 演示
> 触摸 \\
>ls -l
共 0
-rw------- 1 hennes 用户 0 Jul 29 20:25 \
> rm \\
>ls -l
共 0

  • 或者,在相同的原则下,`rm '\'`(但*不是* `rm "\"`)。 (3认同)
  • @evilsoup 只是为了提供一些额外的说明,`\ ` 字符在双引号分隔的字符串中用作转义字符。说 `rm "\"` 将被解析为一个未封闭的字符串,因为第二个引号与转义字符一起使用(因此将被解析为双引号字符本身,**不**细绳)。因此,终端会等到你用另一个 `"` 结束字符串。这里使用双引号的等效方法是 `rm "\\"`(它直接等同于 `rm '\'` 和 `rm \\ `,正如您已经确认的那样)。 (2认同)

zwo*_*wol 16

手动删除名称中带有尴尬字符的文件的一般策略是

rm -i ./*
Run Code Online (Sandbox Code Playgroud)

这将提示您选择是否删除目录中的每个文件。

  • +1 为您的 glob 加上`./` 前缀 (4认同)
  • 或者, single 它是单个字符。`rm -i ./?` (3认同)

小智 12

您还可以通过引用文件的 inode 来取消链接

linus ~/test $ touch \\
linus ~/test $ ls -li
total 0
15204561 -rw-r--r-- 1 pat sudo 0 Jul 29 23:03 \
linus ~/test $ find . -inum 15204561 -exec rm -v {} \;
removed `./\\'
linus ~/test $ ls -li
total 0
linus ~/test $ 
Run Code Online (Sandbox Code Playgroud)