解决 OS X 下目录过深无法删除的问题.
Dec 3, 2015
最近在折腾 OS X 的时候发现一个十分恶心的问题,在我删除 findutils 和 coreutils 的 src 文件夹时给我抛出了个错误,Directory not empty.于是顺手 rm -rf,发现还是不行,仔细看发现似乎是目录层数太多的问题,可以看到有成吨的“confdir-14B—”存在
这是当时的截图,翻了翻 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 出来
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.