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

dav*_*ave 4 linux bash recursive

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

我知道这个:

find /media/server/data001/Unprotected/Downloads/ -type d -empty -exec rmdir {} \;
Run Code Online (Sandbox Code Playgroud)

但我不知道如何让它一次又一次地运行,直到处理完所有嵌套目录然后停止。

slh*_*hck 12

你需要的是深度优先遍历。有了它,您将从最深的目录开始,然后向上移动。find有一个选项,所以你可以简单地运行:

find /some/path -depth -type d -exec rmdir {} \;
Run Code Online (Sandbox Code Playgroud)

您可能希望另外禁止非空目录的警告。你可以2>/dev/null在最后添加。

使用 GNU find(以及findOS X 上的 BSD等其他工具),您可以使用 优化命令 - 并在没有警告的情况下运行它-empty,就像您在上面所做的那样。

find /some/path -depth -type d -empty -exec rmdir {} \;
Run Code Online (Sandbox Code Playgroud)