如何从 Linux 命令行检查目录大小

虽然 Linux 命令 ls
可以显示文件的大小,但它不能正确处理目录,目录总是显示为 4096 字节。您需要使用 du
命令递归到子目录并打印出总数。
使用 du 命令
ls
的最佳替代品是使用带有几个标志的 du
:
du -had 1
-h
标志代表“人类可读”,它将为您格式化以 KB、MB 和 GB 为单位的大小,而不是让您获取计算器。
-a
标志是“all”,将包括单个文件和目录,这有助于模仿 ls
的工作方式。
-d 1
标志限制了 du
打印结果的深度。默认情况下,它被配置为打印出每个子目录,如果你有很多嵌套文件,这可能会很痛苦。 -d
标志会将它们全部相加并打印出执行命令的每个可见目录的总数。

如果您希望它列出每个目录,您可以使用 --apparent-size
标志运行该命令,这将显示每个子目录的总大小,就像您右键单击 > Properties in你的文件浏览器。
虽然这一切都是混乱的,所以如果您想查看当前文件夹中最大的目录,您可以将输出通过管道传递给 sort
命令。确保同时使用 -h
标志,否则 sort
会将 128MB
视为大于 1GB
的数字.
du -had 1 | sort -rh

默认情况下,du
使用当前目录,但您也可以针对特定目录。只需将位置作为最后一个参数传递。
du -had 1 ./world/
查找服务器上最大的目录
Linux 上的一项常见任务是调试大量磁盘使用情况。如果您想查看每个磁盘的总使用情况,您可以使用 df -h
,或安装一个监控工具,如 glances
,它会更清晰地显示它:

但是,这不会深入目录,也不会找到问题的根源。为此,您可以使用 du
,但删除 -d 1
标志,以便它搜索每个目录。将其定位到根目录,对其进行排序,并筛选出前 25 个目录,这样您的屏幕就不会溢出。
du -ah / | sort -rh | head -n 25

对于无法访问的文件,这可能会打印出一些错误;确保使用 sudo
运行它。