rm -fr 不工作

rm -fr 不工作

我有一个由应用程序错误生成的目录,该目录的结构涉及 2000 多个目录,一个目录一个另一个目录,类似于:

目录aaaainside bobinside cccinside dddinsideeee等。这些目录的深度为 1000 级,其中许多目录的名称中的空格均经过 URL 编码(空格是%20>%3E等)。

如果我尝试使用删除该目录,rm -fr我会收到消息directory is not empty.我认为删除目录所需的字符串对于 UNIX 来说太长了。有没有办法删除这个目录rm

我使用的是 Mac OS X Mountain Lion。

答案1

如果您使用rm -rf stuff_to_delete非常深的结构,那么 rm 可能无法处理太多目录。

您可以通过以下方法解决此问题:

find /starting/path/to/delete/from -type d -delete

或与

find -type d /starting/path/to/delete/from -exec rm -f {} \;

第一个应该可以工作。第二个命令为每个目录启动一个新命令 (rm),但这允许您使用 的rm强制标志。但我认为不需要它,并且我希望第一个命令更快。

无论使用什么命令,请首先尝试使用 -print 以确保您的路径正确。

答案2

我经常在我的 MacOSX 10.8 笔记本电脑上观察到“sudo rm -fr”失败的情况。在最新的案例中,我要删除的目录在目录层次结构中包含约 28,000 个文件,最多可能有 8 或 10 层深;磁盘上的总大小约为 4 GB。只需第二次运行“sudo rm -fr”即可删除剩余的文件,就像我一直那样。

在我看来,问题并不在于目录层次结构的深度,因为未删除的文件似乎总是位于目录树的顶部附近。很难相信它与文件或目录的总数有任何关系,因为我希望“rm”递归地删除这些目录。

相关内容