du -sh 是查看目录总大小最常用命令,-s 显示总计、-h 人性化单位;du -sh * | sort -hr 或 du -sh --max-depth=1 . | sort -hr 可定位子项大户;权限不足加 sudo,排除伪文件系统用 --exclude,找大文件可用 find ... -size +100M。

直接用 du -sh 加路径,就能得到指定目录的总占用大小,单位自动换算,清晰直观。
查看单个目录的总大小
最常用命令:
-
du -sh /var/log—— 显示/var/log目录整体占了多少空间(如2.4G /var/log) -
du -sh ~/Downloads—— 查看当前用户下载目录大小 -
du -sh .—— 查看当前所在目录的总大小
-s 表示“只显示总计”,-h 表示“人性化单位”(KB/MB/GB),两者搭配是日常使用的核心组合。
查看目录下各子项大小(快速定位大户)
如果想看清一个目录里哪些子目录或文件最占地方,进到该目录后运行:
-
du -sh * 2>/dev/null | sort -hr—— 列出所有一级子项,按大小倒序排列 -
du -sh --max-depth=1 . | sort -hr—— 效果相同,更明确控制深度
输出类似:
12G ./cache
8.3G ./log
1.1G ./www
一眼就能锁定重点排查对象。
需要权限或跳过特殊目录时
遇到 Permission denied 错误(比如查 /var 或 /etc),加 sudo:
sudo du -sh /var/lib
若想排除虚拟文件系统干扰(如 /proc、/sys),用 --exclude:
sudo du -sh --exclude='proc' --exclude='sys' / | sort -hr
避免扫描无意义的运行时伪文件系统,加快响应,结果更真实。
补充:只看大文件(跳过小碎片)
当目录下文件极多,只想关注真正“吃空间”的个体,可过滤:
-
du -sh * 2>/dev/null | awk '$1 ~ /G|M$/ && $1+0 > 500 {print}' | sort -hr—— 找出大于 500MB 的项 - 或更简洁:
find /var/log -type f -size +100M -ls—— 直接找大于 100MB 的普通文件


















