我有一些目录后面带有奇怪的字符,例如 ^M。它们是意外创建的,我想删除它们。
我列出目录ls -iql
并记下它们的 inode 编号,然后尝试通过 inode 编号搜索来删除它。
find . -inum 7990028 -exec rmdir -i {} \;
但是这个命令太慢了。我只得到了几百个目录,但目录中有很多文件。我想 find 命令一定是在搜索这些文件。
我该如何改善这种情况?
答案1
命令中的 . 表示“从当前目录搜索”。因此,为了加快搜索速度,您应该位于要删除的目录的上一级目录中。然后,您还可以将搜索深度限制在当前目录中,也可以仅按目录进行限制:
find . -inum 7990028 -type d -maxdepth 1 -exec rmdir -i {} \;
答案2
由于您知道有问题的字符是不可打印的,因此您可以简单地使用
rm -rf *[^[:print:]]*
答案3
删除所有包含 的文件名^M
可能比查找要容易得多。
rm -rf *
CtrlVCtrlM*