是否有命令可以获取整个系统的最大文件夹深度?

是否有命令可以获取整个系统的最大文件夹深度?

简洁版本:是否有一个命令和/或一组命令和/或实用程序可以知道我的文件系统上文件夹的最大深度是多少?

长版本:我在 Mac OS X 上。我想知道我的系统上最深的文件夹是什么(我不关心访问权限)。这是因为我想在根目录上启动一个命令,它将是递归的,我不希望它挂起(意外结果)。所以我需要知道最深文件夹/之间有多少层文件夹。/

我在 Google 和论坛上搜索过,但找不到任何结论性的信息。我读到我使用的 HFS+ 文件系统没有深度限制,但路径名长度可能有限制?

编辑:有人尝试过填写 fs但这是一个肮脏的解决方案……如果可能的话,我想要一个“更干净”的解决方案。实际上,在我的实际系统上找到最大深度就足够了,而不需要测试极限。

感谢您的帮助 !

答案1

下面遍历整个文件系统仅查找目录,删除所有不是正斜杠(路径项分隔符)的内容,并打印最长的路径(至少在我的系统上,排序行为可能取决于语言环境)。

find / -type d | sed 's|[^/]||g' | sort | tail -n1

计算结果斜线,除根目录外,每个目录都有一个斜线,因此,如果最深目录路径为/Users/danielbeck,则结果为//。当然,该目录中可能有文件。

答案2

基于丹尼尔·贝克的答案,但对于那些喜欢计数机的人来说

find / -type d | sed 's|[^/]||g' | sort | tail -n1 | egrep -i -o / | wc -l

如果最深目录路径/Users/danielbeck2

答案3

使用的起点作为 0 来查找目录
树中的最深路径:find

$ find / -type d -links 2 \
  -printf %d\\n | sort -nu | tail -n 1

或者您可以使用%p包含
起点的选项,它允许您
在搜索中指定目录并仍然从以下位置开始计数/

$ find /usr /lib -type d -links 2 \
  -printf %p\\n | awk -F / '{print NF-1}' | sort -nu | tail -n 1

答案4

最简单的方法?

mkdir /a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a

你最深的目录现在就是那个。

不太简单的方法?可能是这样的:

for i in `find .`; do echo $i | tr -d -c '/\n' | wc -m >> /tmp/counts; done; sort -nr /tmp/counts | head -n 1

即:显示所有文件路径,删除所有不是 / 的文件。计算有多少个文件,然后显示最大的数字。

类似这样的事情 - 随意改进它,很确定可以使用某种内存文件来避免 /tmp 文件。

相关内容