当 `rm` 命令提示文件不存在时删除该文件,但实际上它确实存在

当 `rm` 命令提示文件不存在时删除该文件,但实际上它确实存在

我正在尝试删除我的音乐收藏文件夹。使用命令

ls -al /mnt/media/Music/

我可以看到该文件夹​​ - 只有它的?名称末尾有一个,所以它看起来像这样:

drwxrwxr-x 1 reuben reuben    0 Mar  3 15:24 Twin Shadow - Eclipse (2015) [FLAC]?

但是当我尝试用这个命令删除它时:

rmdir /mnt/media/Music/Twin\ Shadow\ -\ Eclipse\ \(2015\)\ [FLAC]\?/

然后我得到这个:

rm: cannot remove '/mnt/media/Music/Twin Shadow - Eclipse (2015) [FLAC]?/': No such file or directory

我很困惑;我错过了什么?我希望这不是很明显的事情!

答案1

目前为止,在终端中处理此类文件名的最简单方法是利用 shell 的制表符完成功能:输入足够多的名称以确保其无歧义,例如

rmdir /mnt/media/Music/Twin\ Shad

然后打TAB

第二种最简单的方法 - 至少如果名称本身不包含引号 - 就是引用整个内容,例如

rmdir '/mnt/media/Twin Shadow - Eclipse (2015) [FLAC]?'

(在这种情况下双引号也应该起作用)。

如果你真的需要使用反斜杠转义,那么括号和方括号都是 shell 元字符,也必须转义。

rmdir /mnt/media/Music/Twin\ Shadow\ -\ Eclipse\ \(2015\)\ \[FLAC\]\?/

-不需要转义 —— 尽管这样做也没有什么坏处)。

相关内容