2nd*_*boy 350 linux unix console
假设我想获取 Linux 文件系统的每个目录的大小。当我使用时,ls -la我并没有真正获得文件夹的汇总大小。
如果我使用,df我会得到每个已安装文件系统的大小,但这也无济于事。并通过du我获得每个子目录的大小和整个文件系统的摘要。
但我只想拥有文件系统的 ROOT 文件夹中每个目录的汇总大小。有什么命令可以实现吗?
Tho*_*mas 508
这就是你要找的:
du -sh /*
Run Code Online (Sandbox Code Playgroud)
这是什么意思:
-s 只给出每个命令行参数的总数。-h用于人类可读的后缀,如M兆字节和G千兆字节(可选)。/*简单地扩展到/.
注意:不包括点文件;运行shopt -s dotglob以包括这些。
按大小排序也很有用:
du -sh /* | sort -h
Run Code Online (Sandbox Code Playgroud)
这里:
-h确保sort正确解释人类可读的后缀。Jan*_*nen 88
我经常需要找到最大的目录,所以为了得到一个包含 20 个最大目录的排序列表,我这样做:
du -m /some/path | sort -nr | head -n 20
Run Code Online (Sandbox Code Playgroud)
在这种情况下,大小将以兆字节报告。
Mar*_*tin 14
现有的答案非常有帮助,也许一些初学者(像我一样)也会觉得这很有帮助。
非常基本的循环,但对我来说,这是其他一些与大小相关的操作的良好开端:
for each in $(ls) ; do du -hs "$each" ; done
Run Code Online (Sandbox Code Playgroud)与第一个答案非常相似,结果与 1.) 几乎相同,但我花了一些时间来理解 * 与 ./* 如果在子目录中的区别:
du -sh ./*
Run Code Online (Sandbox Code Playgroud)以下du调用应该适用于 BSD 系统:
du -d 1 /
Run Code Online (Sandbox Code Playgroud)
这并不容易。该du命令要么显示文件和文件夹(默认),要么只显示您在命令行中指定的所有项目的大小(选项-s)。
要在 Linux 上以人类可读的大小获取最大的项目(文件和文件夹),排序,请执行以下操作:
du -h | sort -h
Run Code Online (Sandbox Code Playgroud)
这会让你陷入大量的小文件中。您可以使用--threshold(在我的示例中为 1 MB)来摆脱它们:
du --threshold=1M -h | sort -h
Run Code Online (Sandbox Code Playgroud)
此命令的优点是它包含隐藏的点文件夹(以 开头的文件夹.)。
如果您真的只想要文件夹,则需要使用,find但这可能会非常非常慢,因为du必须多次扫描许多文件夹:
find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h
Run Code Online (Sandbox Code Playgroud)