从外壳程序中,我需要列出所有子目录的大小。我目前正在使用:
du -hs * | sort -hr
但是,这只会下降一级,并且不会遍历目录树。
答案 0 :(得分:6)
最简单的是:
du -h --max-depth=1 parent
这将显示parent
的所有子项大小。如果您还需要孙子项,则可以这样做
du -h --max-depth=2 parent
如果您要整个家庭
du -h parent
所有这些都将汇总到给定级别的每个子目录的总目录大小(最后一个除外,它将为所有子目录提供
)如果您不希望子目录的内容,请添加-S
标志。
答案 1 :(得分:1)
您可以使用**/*
shopt -s globstar
du -hs **/* | sort -hr
shopt -u globstar
答案 2 :(得分:1)
如果排序,您可能需要一个一致的输出,而不是以GB为单位,以MB为单位,以KB为单位...。如果我正确阅读了OP,则不会得到目录树,这就是问题,对吧?
由于-s,它没有列出子目录。拿出来(再次,如果我看错了,抱歉。)
du -b | sort -n
这会列出所有大小(以字节为单位),因此-n
仅需要sort
。
答案 3 :(得分:0)
通配符很好,但是通配符也会列出文件,而不仅仅是目录。下面将返回所有目录的大小,仅返回目录的大小:
find . -type d -exec du -sh {} \; | sort -hr
答案 4 :(得分:0)
maxdepth
功能应该可以解决您的问题,但是由于某些奇怪的原因,它似乎不起作用:
find ./ -maxdepth 1 -type d -exec du -k {} \;
也许有人可以解释为什么不考虑maxdepth
?