1

我目前正在编译不同的 PHP 版本并想删除一些垃圾文件夹。

我有一个名为“php-5.4.7-src”的文件夹,我想删除它,但是当我这样做时

$ rm -Rf php-5.4.7-src

总有弹出

rm: cannot remove directory php-5.4.7-src/ext/standard/tests/general_functions: File exists
rm: cannot remove directory php-5.4.7-src/ext/standard/tests: File exists
rm: cannot remove directory php-5.4.7-src/ext/standard: File exists
rm: cannot remove directory php-5.4.7-src/ext: File exists
rm: cannot remove directory php-5.4.7-src: File exists

所以我做了

$ find . 

$ find . -type f

并且只是弹出上面的文件夹,不存在文件。我也是所有文件夹的所有者,我也尝试以 root 身份删除它们。

如何删除不存在的文件?

4

1 回答 1

1

我意识到这并不能回答您的问题,而只是风格的小问题,可能会在将来使您头疼。如果您不得不将您的脚本移动到另一种风格的 UNIX 中,那么它们就有可能会崩溃。进行递归删除的传统标志是-r,不是-R。节省您也不必按 shift 键:)

现在谈谈什么可以回答你的问题。我知道您说过您检查了正在运行的进程,但这是保持 inode 保持打开状态的唯一方法,并且只有打开的 inode 才能防止层次结构被删除。还有其他进程,例如updated在当时可能一直在爬取您的目录的系统上经常运行的进程。您可以尝试的一件事是执行sync以确保所有挂起的写入都已刷新。

有东西使目录保持打开状态。您可能还想尝试lsof +D php-5.4.7-src看看到底是什么。

于 2012-12-06T07:43:39.553 回答