如何查找目录的深度

如何查找目录的深度

有没有办法找到给定目录树的最大深度?我正在考虑使用 find 来增加 maxdepth 并比较找到的目录数量,但也许有更简单的方法?

答案1

一种方法是假设 GNU find

find . -type d -printf '%d\n' | sort -rn | head -1

这不是特别有效,但它肯定比-maxdepth依次尝试不同的要好得多。

答案2

试试这个,例如尝试找到 下树的最大深度/,使用

find / -type d

/无论深度如何,都会给出每个目录。因此,awk结果作为/分隔符来查找计数,并且count-1 会给出来自 的树的最大深度/,因此命令将是:

find / -type d | awk -F"/" 'NF > max {max = NF} END {print max}'

答案3

考虑使用updatedb然后locate。当locate查询数据库时,它的执行速度非常快,并且比单独请求每个文件要快得多。updatedb也很快,因为它只更新数据库的更改,而不是重新创建数据库。唯一的缺点是updatedb默认情况下您可能需要 root 权限才能运行,除非您创建并保留自己的用户空间数据库。

locate请记住,文件名中可能有换行符,因此在处理输出时需要更加小心。最好使用空字节作为文件名分隔符。

把它们加起来:

updatedb && locate -0 "$(pwd)" | awk -v RS='\0' -F"/" '{print NF-1}' | sort -n | tail -n1

感谢@sai sasanka 为我提供了一个完美的 awk 脚本。

相关内容