我编写的一个脚本根据 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)