我有以下目录结构(示例)-
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
实现支持-d
1 来限制显示磁盘使用情况的深度(而不是显示磁盘使用情况的深度)会计),所以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
,您可以获得每个目录的摘要在命令行上,因此,如果没有显式目录(隐式目录.
),您只会获得所有内容的摘要,而不是单独获得顶层下每个目录的摘要。