用du -sh */ | sort -hr可快速列出当前目录下各子目录磁盘占用排名:-s汇总大小、-h人类可读、-r倒序,sort -h确保数值正确排序;可加head/tail截取、--exclude过滤、nl添加序号。

直接用 du 加 sort 就能快速列出当前目录下各子目录的磁盘占用排名,关键在于参数搭配和单位处理。
基础命令组合:按大小倒序排列
最常用写法是统计当前目录下一级子目录的大小,并从大到小排序:
-
du -sh */ | sort -hr——-s汇总每个目录总大小,-h以人类可读格式(KB/MB/GB)显示,-r表示倒序,-h让sort正确识别带单位的数值 - 注意:
*/只匹配目录,避免文件干扰;如果想包含隐藏目录(如.config),改用du -sh .*/ *或先shopt -s dotglob
限制输出行数,聚焦重点
排行榜太长时,用 head 或 tail 截取前 N 名:
-
du -sh */ | sort -hr | head -20—— 查看占用最大的前 20 个目录 -
du -sh */ | sort -hr | tail -10—— 查看最小的 10 个(有时用于确认空目录或残留小文件)
排除特定路径,避免干扰
某些目录(如 /proc、/sys、缓存目录)可能报错或无意义,可用 --exclude 过滤:
du -sh --exclude='node_modules' --exclude='.git' */ | sort -hr- 也可结合
find更精准控制,例如只统计普通目录:find . -maxdepth 1 -type d ! -name '.' -exec du -sh {} + | sort -hr
提升可读性:添加序号与对齐
加个行号更方便定位,用 nl 或 awk 处理:
-
du -sh */ | sort -hr | head -15 | nl -w3 -s'. '—— 左对齐编号,格式如 “ 1. 2.4G docs/” - 若需列对齐,可用
column -t(但要求字段分隔一致,建议配合awk '{print $1 "\t" $2}'预处理)
不复杂但容易忽略细节,比如 sort -h 必须和 du -h 配合,否则会按字符串排序导致 10G 排在 2G 前面。











