是否有任何 du(磁盘使用情况)命令标志来总结每个子目录的大小

是否有任何 du(磁盘使用情况)命令标志来总结每个子目录的大小

我有以下目录结构(示例)-

main
|--src
    |--com
        |- company
    |--org
        |- apache
|--resources
    |--abc
|--etc

我需要该目录下每个子目录使用的磁盘空间main。所以,输出会是这样的 -

user@main> du -{command_switches}
1M  src
20M resources
3M  etc

我尝试了几种可用的开关 - sh、Sh、ash、aSH - 但我无法获得所需的结果。

答案1

某些du实现支持-d1 来限制显示磁盘使用情况的深度(而不是显示磁盘使用情况的深度)会计),所以du -hd 1 .应该适用于当前目录。

可移植的是,您始终可以执行以下操作:

find . ! -name . -prune -type d -exec du -s {} +

-h(如果您的du实现支持则添加)

但请注意,如果当前目录中有很多目录,find最终可能会运行多次调用,du这可能意味着某些硬链接会被计算多次。du如果在遍历不同参数时遇到硬链接,某些实现也不会阻止对硬链接进行多次计数。


1,对于旧版本的 GNU du,您可能需要--max-depth改为。-d为了与 FreeBSD 兼容,仅在 coreutils 8.8 中添加了等效的短选项

答案2

您可能想了解一下

$ du --max-depth=1 -h

我知道这个帖子的主题是,du但您可能还想看看图形应用程序,它可以更有效地显示此类信息,例如 baobab 或 k4dirstat。

答案3

也许我错过了你想要的东西,但我想

du -sh *

正是你想要的。这里很*重要。使用-s,您可以获得每个目录的摘要在命令行上,因此,如果没有显式目录(隐式目录.),您只会获得所有内容的摘要,而不是单独获得顶层下每个目录的摘要。

相关内容