我希望能够运行一个脚本来删除所有空目录。问题是其中一些是嵌套的,即目录中只有空目录,因此脚本需要递归。
我知道这个:
find /media/server/data001/Unprotected/Downloads/ -type d -empty -exec rmdir {} \;
但我不知道如何让它反复运行,直到所有嵌套目录都已处理完然后停止。
答案1
你需要的是深度优先遍历。这样,你就可以从最深的目录开始,然后向上移动。find
有一个选项,所以你只需运行:
find /some/path -depth -type d -exec rmdir {} \;
您可能还想抑制非空目录的警告。您可以2>/dev/null
在末尾添加。
使用 GNU find
(以及 OS X 上的 BSD 等其他系统find
),您可以优化命令 – 并在没有警告的情况下运行 – 使用-empty
,就像您上面所做的那样。
find /some/path -depth -type d -empty -exec rmdir {} \;