尝试使用“rm -rf”删除目录,但收到消息称目录不为空

尝试使用“rm -rf”删除目录,但收到消息称目录不为空

我尝试使用“rm -rf”删除目录并收到消息“目录不为空”:

Bens-MacBook-Pro:please benjaminhocking$ ls -lart empty_directory/
total 16
drwxr-xr-x  5 benjaminhocking  staff  170 Aug 27 14:46 .
drwxr-xr-x  3 benjaminhocking  staff  102 Aug 27 15:28 ..
Bens-MacBook-Pro:please benjaminhocking$ rm -rf empty_directory/
rm: empty_directory/: Directory not empty
Bens-MacBook-Pro:please benjaminhocking$ rmdir empty_directory/
rmdir: empty_directory/: Directory not empty

如果我使用 Finder 尝试执行相同操作(将文件夹拖到废纸篓),我会收到以下消息

由于项目“empty_directory”正在使用中,因此无法完成该操作。

我曾经尝试过这样做xattr -d com.apple.quarantine,纯粹是出于迷信,但没有任何效果。

一个可能很重要的背景信息是,这个目录最初位于一个目录中,这个目录应该被我在 Terminal 锁定之前发出的“make clean”命令删除,之后我运行的其他一半以上的程序也被锁定,包括 Skype,最后是操作系统本身。最后我不得不按住电源键重新启动电脑。

编辑以添加:我遗漏的另一个重要信息是,这发生在加密文件夹中encfs。我能够在加密端找到相应的文件夹并将其删除。我仍然不知道为什么我不能像平常一样从解密端执行此操作。我暂时不回答这个问题,以防有人对此有好的答案。

答案1

重新启动计算机并rmdir(1)再次运行。

$ rmdir -r empty_directory/

如果这不起作用,请尝试:

$ rm -rf empty_directory/

如果仍然不起作用,假设 OS X 已lsof(8)预安装,则输入:

$ lsof +D empty_directory/

这应该会告诉您此目录中是否有任何文件正在被任何程序使用。我认为 HFS+ 文件系统不允许删除正在使用的文件。无论如何,killall(1)任何可能使用此目录或其中任何隐藏文件的可执行文件。Finder 很可能正在使用目录中的隐藏文件empty_directory来存储文件夹视图设置。希望这能有所帮助。

PS:要确定是否lsof(8)已安装,请输入:

$ lsof

如果输出如下所示,lsof(8)则已安装在您的系统上。

lsof: /usr/bin/lsof /usr/bin/X11/lsof /usr/share/man/man8/lsof.8.gz

检查该目录中是否有任何隐藏和加密的文件或加密密钥文件。这些可能是罪魁祸首。

答案2

使用“磁盘工具”修复磁盘为我解决了这个问题。

答案3

对我有用的唯一解决方案是https://unix.stackexchange.com/questions/234876/unable-to-delete-a-file-whatever-i-do

将它们移动到 /tmp 并重新启动。

我尝试过的其他选项是:

  • 磁盘实用程序 - 急救。
  • lsof +D bad_file没有显示输出。
  • sudo rm-rf
  • 启动进入单用户终端和rm -rf

答案4

我在尝试删除目录 (rm -r dirname) 时遇到了这个错误。在搜索并找到此主题之前,我已经尝试了我在此处阅读的所有建议。我不知道原始问题中是否有其他无意中未说明的要点,但就我而言,问题的根源和解决方案是:

  • 有问题的目录位于网络安装磁盘上

  • ls从 Finder 或命令行进行的任何尝试均未显示任何内容,...

  • 我通过命令登录网盘服务器ssh,查看了ls -al一下,结果显示除了 和.之外..,还有几个.__filename带有扩展安全信息(即+附加在模式中)的项目。

我相信这些是或类似于我多年前在使用cp -Rtarcpio存档或移动文件组时第一次注意到的 Mac OSX 创建的文件。我当时推断它们是用来在移动后正确重置某些文件属性的 - 可能是 uid/gid、mode、acls、mtime/utime/ctime 等;我不太确定 - 属性不是在此之前已经通过这些命令正确重置(我记得在使用通常形式的、等时这些类型的文件开始出现之前,OSX 曾经包含mvmaccpmac命令来解决这个问题)。.__filenamecptar

当这些文件被写入内部、USB 或 Firewire 驱动器时,我从未遇到过删除这些文件的麻烦;这是我第一次在网络磁盘上发现它们;从安装的客户端完全无法检测到,但从服务器端查看时各方面都正常。

rm -rf dirname从网络磁盘服务器上的登录正确删除了目录及其内容。

因此,还有另一个答案;如果它与网络磁盘一起出现在任何人面前,那么这可能是解决此问题的另一种潜在解决方案。

相关内容