如何使用 Linux 上的 Bash 脚本删除嵌套的空目录?

如何使用 Linux 上的 Bash 脚本删除嵌套的空目录?

我希望能够运行一个脚本来删除所有空目录。问题是其中一些是嵌套的,即目录中只有空目录,因此脚本需要递归。

我知道这个:

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 {} \;

相关内容