最近在折腾 OS X 的时候发现一个十分恶心的问题,在我删除 findutils 和 coreutils 的 src 文件夹时给我抛出了个错误,Directory not empty.于是顺手 rm -rf,发现还是不行,仔细看发现似乎是目录层数太多的问题,可以看到有成吨的“confdir-14B—”存在

photo_2015-12-03_18-44-36

这是当时的截图,翻了翻 stackoverflow 发现似乎是 OS X 的内核的问题.我的表情是惊恐的,我从 3.4~4.3 的 Linux 内核都没见过这错误,这 BSD 的内核得是多久之前的啊…

之后先是尝试使用 gnu-coreutils 的 rm 删除,同样报错.最后同样是在 stackoverflow 上找到了答案.

d="confdir-14B---"
while test -d "$d/confdir-14B---"; do
    nd=$(mktemp -u snafuXXXXXX)
    mv "$d/confdir-14B---" "$nd"
    d="$nd"
done

在 confdir-14B 的第一层执行就可以了,这个脚本会把所有的 confdir-14B 移动出来的同时重命名,之后 rm -rf *就好了

12.5更新:

while [ true ]; do mv confdir-14B---/confdir-14B--- b; rm -r confdir-14B---; mv b/confdir-14B--- confdir-14B---; rm -r b; done

在删除完毕之后 ctrl-c break 出来


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.