使用 tree 命令打印目录内容的大小,但从报告中排除文件

使用 tree 命令打印目录内容的大小,但从报告中排除文件

我经常使用

du --max-depth=n -h | sort --human-numeric-sort

现在我想tree以类似的方式使用。我发现这里部分答案

tree -sh --sort=size --du

报告每个目录的累计大小(如)。这--du也会报告每个文件。如果我只想报告目录,我应该添加到。但似乎做了两件事:treedu-dtree-d

  1. 从报告中删除文件。
  2. 从每个目录计算的累计总数中删除文件大小。

当然,我只想要 1,而不是 2(就像du那样)。所以

tree -sh --sort=size --du -d

总是会报告“小”尺寸,而不考虑文件大小。

tree解决这个问题吗?还有其他选择吗?

答案1

这绝对是 的一个缺点tree。它只总结“它所看到的”的大小。如果你忽略带有-d或的文件,-I或者如果你限制深度,tree则会报告“错误”的目录大小。


如果你不需要限制级别,那么这个方法很好:

tree --du -shaC | sed -n '/\[01;34m/p'

作为来自环境变量01;34的目录的颜色值( )。LS_COLORS...di=01;34...

但是如果您想限制级别,使用此方法最深级别仍会报告错误的目录大小。


考虑使用更高级的工具,例如ncdu

也可以看看U&L SE 上有这个非常相似的问题

相关内容