我想删除不包含任何文件的顶层目录,但可以包含其他空(即再次不包含文件)目录。 例如:
$ ls -R .: foo/ ./foo/: bar bar1 ./foo/bar/: ./foo/bar1/:
在这里,我想删除目录foo/ (及其子目录)。 起初,我想用像find . -type d -empty东西的东西find . -type d -empty find . -type d -empty用于search,但由于foo包含目录,因此只能find较低级别的目录:
$ find . -type d -empty ./foo/bar ./foo/bar1
我想我可以循环直到find . -type d -empty find . -type d -empty找不到任何东西,但是我可能会得到一个非常大的目录结构,其中包含很多这样的空目录,我担心这样做会对性能造成影响。
任何想法?
find . -depth -type d -empty find . -depth -type d -empty应该做的伎俩。 -depth将导致find在目录本身之前处理目录的内容。
编辑:
大概你会在这个发现结束时使用类似于-delete东西,否则你会遇到同样的问题。 另外值得注意的是, -delete实际上意味着-depth ,所以真的坚持find . -type d -empty -delete find . -type d -empty -delete会给你你一直在寻找的东西; 假设你没有问题,删除任何你遇到的其他较低级别的空目录。