由于“没有此文件或目录”,无法“rm”名为“() - .”的文件

由于“没有此文件或目录”,无法“rm”名为“() - .”的文件

我编写的一个脚本根据 Filezilla 的提示将文件命名为“() - 。”Filezilla 无法从服务器中删除它,因此我尝试从包含文件夹内部“rm “() - 。”并收到“rm:无法删除‘() - 。’:没有这样的文件或目录”。然后我使用“ls”,结果显示...

 () -  .                                               03_The_Kill_30_Seconds_to_Mars.mp3                 Crooked X (Crooked X) - 08 Nightmare.mp3
01 Attack - 30 Seconds to Mars.mp3                     03 Wave of Mutilation - Pixies.mp3                 Danzig (Danzig) - 01 Twist Of Cain.mp3

它列出了有问题的文件,但在这里看起来它可能包含一个前导空格,并且可能在“-”和“。”之间有两个空格。因此,我尝试“rm”混合了其他字符之间的许多空格组合,但没有成功。

我也尝试重命名它但出现同样的错误。

我的后备方案是用同名的 0KB 文件替换它,但我宁愿删除它(阅读 -我有强迫症,它出现在“ls”中让我很恼火

谢谢你的帮助。

运行:Ubuntu 12.04 LTS 服务器版

答案1

从终端...首先,让我们在尝试之前进行测试。使用此命令创建一个类似的文件:

touch \(\)

然后删除该文件:

rm \(\)

\符号用于特殊字符。

对于您来说,只要该文件是唯一以 () 开头的文件,您就应该使用此命令

rm -i \(\)*

使其-i具有交互性(征求您的许可)。

答案2

由于文件名包含空格,因此需要将文件名放在引号中。

无法删除文件的一个问题是您可能没有执行此操作的权限。

所以尝试一下sudo rm " () - ."

这应该可以解决问题。还要注意“。”后面的尾随空格。

答案3

在这种情况下,我通常会使用制表符补全来确保所有内容都正确转义。步骤如下:

  • 打开终端并导航到其中包含错误文件名的文件夹
  • 输入“rm \ ”(反斜杠后跟一个空格)
  • tab
  • 应该使用必要的转义符来扩展文件名

这是假设这是唯一以空格开头的文件名 - 如果有多个,您可能需要手动输入并转义前几个字符,以便它可以区分您指的是哪一个。

答案4

另一种解决方案(尽管正确使用rm可能更可取)是使用午夜指挥官,例如

$ sudo apt-get install mc
$ mc

然后,

  • 移动到包含该文件的目录(使用向上/向下箭头选择目录并进入cd其中),
  • 选择要删除的文件 (CTRL-T)
  • 删除文件(F8)

相关内容