Unix / Solaris:由于存在伪文件,因此无法删除目录

时间:2012-11-19 09:08:02

标签: file unix directory solaris delete-file

我目前正在编译不同的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身份删除它们。

如何删除不存在的文件?

1 个答案:

答案 0 :(得分:1)

我意识到这不能回答你的问题,只是一小部分风格可能会让你在将来免于头疼。如果您必须将脚本移动到另一种UNIX,那么它们有可能会破坏。执行递归删除的传统标志是-r,而不是-R。节省您必须按下shift键:)

现在可以回答你的问题。我知道你说你检查过运行进程,但这是一个inode可以保持打开的唯一方法,只有一个开放的inode将保持层次结构不被删除。还有其他一些进程,例如updated经常在可能已经在您的目录中爬行的系统上运行。您可以尝试的一件事是执行sync以确保已刷新所有挂起的写入。

Something 正在打开目录。您可能还想尝试lsof +D php-5.4.7-src来查看具体内容。