查找/删除不包含任何文件的顶层文件夹

查找/删除不包含任何文件的顶层文件夹

我想删除不包含任何文件的顶级目录,但可以包含其他空目录(同样意味着不包含文件)。例如:

$ ls -R
.: foo/
./foo/: bar  bar1
./foo/bar/:
./foo/bar1/:

这里,我想删除目录foo/(及其子目录)。起初,我想使用类似的方法find . -type d -empty进行搜索,但由于 foo 包含目录,因此它只能找到较低级别的目录:

$ find . -type d -empty
./foo/bar
./foo/bar1

我想我可以循环直到find . -type d -empty什么都找不到,但我最终可能会得到一个包含许多空目录的非常大的目录结构,而且我担心这样做会对性能产生影响...

任何想法?

答案1

find . -depth -type d -empty应该可以解决问题。 -depth将导致 find 在目录本身之前处理目录的内容。

编辑:

假设您会-delete在 find 的末尾使用类似的东西,否则您会遇到您描述的相同问题。同样值得注意的是,-delete实际上意味着-depth,所以实际上,坚持使用find . -type d -empty -delete会让您一次性找到您想要的东西;假设您删除遇到的任何其他较低级别的空目录也没有问题。

相关内容