首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归查找没有文件的空目录或目录

递归查找没有文件的空目录或目录
EN

Unix & Linux用户
提问于 2019-07-23 07:44:34
回答 1查看 2K关注 0票数 2

这里有find . -type d -empty命令,但它只找到字面上的空目录。

我想要实现的是一些更复杂的东西:我希望找到只有其他目录或空目录的空目录或目录,这个规则应该递归地传递。

例如,在这个目录结构:~1/11/111/中,它会找到1/1/11/1/11/111/,但是如果在树中的任何一点上都有一个文件,例如,如果在1/11/111/file1中有一个文件,那么在文件应该返回之前没有一个文件。因此,如果在1/11/111/1111/旁边有一个空目录1/11/111/file1,那么应该返回1111。

我之所以要这样做是因为我想删除我的空文件夹。

现在,我可以通过一次又一次运行find . -type d -empty -delete来实现这一点,但我想要一种在删除它们之前将其可视化的方法。

这个是可能的吗?

EN

回答 1

Unix & Linux用户

发布于 2019-07-23 08:05:03

要打印空目录而不删除任何目录,我们必须做的不仅仅是从叶子上删除空目录。

像这样的事情可能会奏效:

代码语言:javascript
复制
find dir/ -type d ! -exec sh -c \
  'find "$1" ! -type d -print -quit | grep -q . >/dev/null' sh {} \; -print

外部find查找每个目录,并对每个目录运行另一个find。内部find会查看该目录(递归地)是否包含任何非目录,如果包含,则返回一个真值。然后外部find打印返回false的每个目录(即不包含任何非目录)。

不过,对于递归的finds来说,这是相当慢的。一个更好的解决方案可能是缓存文件所在的目录,或者是一种从空目录开始直到包含文件的分支的方法(S)。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/531618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档