这两个文件是 Office 2011 的产物,会阻止删除“Contents”目录。我该如何删除这些?
sh-3.2# ls -l -a
total 21496
drwx------+ 15 Beef staff 480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef staff 608 Jan 14 23:40 ..
-rw-r--r--@ 1 Beef staff 10244 Jan 10 10:36 .DS_Store
-rw-r--r-- 1 Beef staff 0 Dec 25 23:13 .localized
drwxrwxrwx 47 Beef staff 1504 Jan 2 00:01 CSC119 - 1228
drwxrwxrwx 7 Beef staff 224 Jan 1 22:50 Chris 1228
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 Contents
drwxrwxrwx@ 5 Beef staff 1
sh-3.2# cd Contents
sh-3.2# ls -l -a
total 0
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 .
drwx------+ 15 Beef staff 480 Jan 14 23:32 ..
具体来说就是上面的“.”和内容目录中的“..”文件。我在 Mac 终端上使用 bash shell。我已经扎根了。
谢谢!
sh-3.2# ls -a -l
total 21496
drwx------+ 15 Beef staff 480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef staff 608 Jan 15 00:19 ..
-rw-r--r--@ 1 Beef staff 10244 Jan 10 10:36 .DS_Store
-rw-r--r-- 1 Beef staff 0 Dec 25 23:13 .localized
drwxrwxrwx 47 Beef staff 1504 Jan 2 00:01 CSC119 - 1228
drwxrwxrwx 7 Beef staff 224 Jan 1 22:50 Chris 1228
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 Contents
drwxrwxrwx@ 5 Beef staff 160 Dec 28 12:09 Lily 1228
drwxrwxrwx 29 Beef staff 928 Jan 3 21:48 Old Dell Laptop
lrwxr-xr-x 1 Beef staff 29 Dec 26 02:51 Relocated Items -> /Users/Shared/Relocated Items
-rwxrwxrwx@ 1 Beef staff 1554944 Jan 8 2019 SanDisk Flashback.pdf
drwxrwxrwx 4 Beef staff 128 Jan 8 2019 SanDiskSecureAccess
-rwxrwxrwx 1 Beef staff 8600360 Nov 4 2016 SanDiskSecureAccessV3.01_win.exe
drwxr-xr-x@ 9 Beef staff 288 Jan 10 11:41 Scanned Docs
drwxrwxrwx 4 Beef staff 128 Dec 19 10:04 google
sh-3.2# rmdir Contents
rmdir: Contents: Directory not empty
sh-3.2# rmdir -p Contents
rmdir: Contents: Directory not empty
我如何摆脱这个目录?
sh-3.2# ls -a -l
total 21496
drwx------+ 15 Beef staff 480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef staff 608 Jan 15 00:19 ..
-rw-r--r--@ 1 Beef staff 10244 Jan 10 10:36 .DS_Store
-rw-r--r-- 1 Beef staff 0 Dec 25 23:13 .localized
drwxrwxrwx 47 Beef staff 1504 Jan 2 00:01 CSC119 - 1228
drwxrwxrwx 7 Beef staff 224 Jan 1 22:50 Chris 1228
drwxrwxr-x@ 3 Beef staff 96 Aug 25 2010 Contents
drwxrwxrwx@ 5 Beef staff 160 Dec 28 12:09 Lily 1228
drwxrwxrwx 29 Beef staff 928 Jan 3 21:48 Old Dell Laptop
lrwxr-xr-x 1 Beef staff 29 Dec 26 02:51 Relocated Items -> /Users/Shared/Relocated Items
-rwxrwxrwx@ 1 Beef staff 1554944 Jan 8 2019 SanDisk Flashback.pdf
drwxrwxrwx 4 Beef staff 128 Jan 8 2019 SanDiskSecureAccess
-rwxrwxrwx 1 Beef staff 8600360 Nov 4 2016 SanDiskSecureAccessV3.01_win.exe
drwxr-xr-x@ 9 Beef staff 288 Jan 10 11:41 Scanned Docs
drwxrwxrwx 4 Beef staff 128 Dec 19 10:04 google
sh-3.2# sudo rm -r -f Contents
rm: Contents: Directory not empty
还是不会删除。
答案1
您的目录看起来空,但ls
输出表明有是一个文件,因为该目录的链接计数是 3 而不是 2(APFS 文件系统上的空目录的链接计数应该为 2)。
这意味着您的文件系统已设法使自己进入不一致的状态,并且您应该fsck
在其上运行。在 macOS 上,这是通过“磁盘实用程序”应用程序运行磁盘急救来完成的。如果问题出在您的主启动磁盘(通常称为“Macintosh HD”,至少默认情况下),那么您应该从恢复模式执行此操作。
如果这是我遇到了同样的问题,那么就会最有可能的可以通过首先确保您使用的是最新版本的 macOS(2019 年 3 月之后的某个时间)来解决,然后再在恢复模式下对磁盘运行急救。
Cmd+R重新启动计算机后,按一下即可进入恢复模式。进入恢复模式后,您将有机会从菜单运行“磁盘工具”。
答案2
目录条目.
和..
是 20 世纪 70 年代初期的产物,当时 UNIX 确实在小型机器上运行,并且代码也需要很小。
因此,人们创建了到名为.
和 的目录的真正硬链接..
。这个坏主意会导致空目录的硬链接计数为 2。
今天,这是无稽之谈,自 1988 年以来的 POSIX 定义是这些条目不需要存在。他们的行为必须被效仿。这意味着如果.
或..
出现在路径名中,文件系统只需以正确的方式运行即可。
现代文件系统在目录中没有.
条目,..
并且空目录的硬链接计数不为 2。
ZFS 就是以这种方式实现的,但会假装历史行为以避免编写错误的程序失败。因此,即使这些条目不存在,ZFS 也会交付.
和..
with 。readdir()
无论您使用的是现代文件系统还是历史文件系统,都无法删除这些条目。
现在你的链接数为 2...
在历史文件系统上,操作系统通常认为链接计数 > 2 的目录具有子目录,因此无法删除。
如果目录中的链接计数不是列出的扩展属性文件的隐藏“属性目录”的结果,则这一定是文件系统中的错误造成的。
如果您的操作系统不允许使用该程序删除该目录,那么unlink
您需要运行.rm
root
fsck
答案3
我的第一个猜测是您的文件已被删除,但由正在运行的进程保持打开状态。使用sudo lsof | grep Contents
- 这应该为您提供所有打开的文件名称中包含“Contents”一词的 PID。这是输出的前几行,用于显示标题:
$ sudo lsof | head
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,1 4096 2 /
systemd 1 root rtd DIR 253,1 4096 2 /
...
当您摆脱在目录中保持某些内容打开的进程时,您将能够将其删除。
答案4
尝试重新启动。可能你的某个进程仍在Contents
目录中打开已删除的文件。重新启动将释放该文件,然后你就可以删除该目录。