![无法直接在 bash 中与带有撇号的文件交互](https://linux22.com/image/224927/%E6%97%A0%E6%B3%95%E7%9B%B4%E6%8E%A5%E5%9C%A8%20bash%20%E4%B8%AD%E4%B8%8E%E5%B8%A6%E6%9C%89%E6%92%87%E5%8F%B7%E7%9A%84%E6%96%87%E4%BB%B6%E4%BA%A4%E4%BA%92.png)
我有一个名为“I'm Here.mp3”的文件,当我尝试使用 ls、cp、mv 等任何内容与它交互时,它会返回cannot stat "./I'm Here.mp3": No such file or directory
。
我尝试了双引号、单引号、无引号,每个都尝试用反斜杠转义撇号,我检查了权限,我创建了一个名为“I'm Here.png”的虚拟文件,这没有问题,并且我对同一文件夹中的其他文件没有问题,只是这个文件恰好有撇号。
什么会导致终端无法识别这样的文件?我仍然可以通过媒体播放器收听它,在文件管理器中复制、粘贴和移动等,但我正在尝试纠正这样的文件文件夹的元数据。
使用该命令,ls | hexdump -C
我可以将撇号识别为十六进制值e2 80 99
。
答案1
如果引用文件名I'm here.mp3
不起作用,那么文件名实际上可能不是它看起来的那样。
I'm
也许和之间的空格Here
不是空格,或者名称末尾( 后)有一个额外的空格(或其他不可见字符)mp3
。以ls | hexdump -C
十六进制查看目录中的文件名,然后根据得到的十六进制输出在文件名中使用正确的字符。