在创建新文件夹时,我没有意识到在 BASH 中 ' 是一个特殊字符,这意味着我最终得到了一个名为
One Flew Over the Cuckoos\ Nest\ \(1975\)?quit?quit()?ls??????????
或者准确地说
drwxrwxrwx 1 root root 0 Mar 8 23:21 One Flew Over the Cuckoos\ Nest\ \(1975\)?quit?quit()?ls??????????
这让我的终端抓狂了:制表符补全根本找不到它。如果我尝试通过其 inode 打开它,则会收到错误:
LibreELEC:/var/media/MYNAME/Films # rm -r "$(find -inum 187)"
rm: can't remove './One Flew Over the Cuckoos\ Nest\ \(1975\)
quit
quit()
ls': No such file or directory
我搞砸了有多严重?
答案1
解决了。我通过它的索引节点删除它来做到这一点,就像我在OP中尝试过的那样,但现在使用以下行完全绕过文件名:
find . -inum 187 -delete
对于阅读本文的任何人来说,187 应该替换为通过以下方式找到的 inodeLS-李
答案2
您可以使用 rm 中的交互选项。它将列出每个文件并询问您是否要删除它。因此,您可以仅使用通配符来简单测试:
rm -i *Flew*Cuckoo*Nest*
这对 rmdir 不起作用。如果目录为空,您可以:
rm -ir *Flew*Cuckoo*Nest*
或者,您可以将目录重命名为您可以键入的内容,前提是您可以匹配足够的目录以确保唯一性:
mv *Flew*Cuckoo*Nest* BetterCuckooName