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

Ben*_*ing 53 finder rm disk-encryption macos

我尝试使用“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
Run Code Online (Sandbox Code Playgroud)

如果我使用 Finder 尝试同样的事情(将文件夹拖到废纸篓),我会收到消息

操作无法完成,因为项目“empty_directory”正在使用中。

我试过这样做xattr -d com.apple.quarantine,纯粹是出于迷信,但没有任何好处。

一个可能重要的上下文是,该目录最初位于一个目录中,该目录应该由我在终端锁定我之前发出的“make clean”命令删除,之后我拥有的其他程序的一半多一点运行也被锁定,包括 Skype,最终是操作系统本身。我最终不得不通过按住电源键重新启动计算机。

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

Jon*_*eno 16

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

$ rmdir -r empty_directory/
Run Code Online (Sandbox Code Playgroud)

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

$ rm -rf empty_directory/
Run Code Online (Sandbox Code Playgroud)

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

$ lsof +D empty_directory/
Run Code Online (Sandbox Code Playgroud)

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

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

$ lsof
Run Code Online (Sandbox Code Playgroud)

如果输出看起来像这样,则说明lsof(8)已安装在您的系统上。

lsof: /usr/bin/lsof /usr/bin/X11/lsof /usr/share/man/man8/lsof.8.gz
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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


Joe*_*Joe 6

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

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

我尝试的其他选项是:

  • 磁盘工具 - 急救。
  • lsof +D bad_file 显示没有输出。
  • 须藤rm -rf
  • 启动到单用户终端和rm -rf.

  • 来自单用户终端的 Fsck 没有帮助,`rm -rf` 和 `lsof +D` 也没有显示任何内容。奇怪的是,我能够将有问题的目录移动到`/tmp`,尽管它在重新启动后没有被删除。同样的问题仍然存在,但至少它有点偏僻。 (2认同)