du -h --max-depth=1 可直接查看当前目录下各一级子目录(如 /app、/logs)的真实磁盘物理占用,因 -h 提供人类可读单位,--max-depth=1 限制仅统计顶层子项,避免嵌套干扰,且默认按实际磁盘块计算,精准反映空间占用。

用 du -h --max-depth=1 就能直接看到当前目录下各业务文件夹的真实磁盘物理占用(即实际写入块所占空间,含稀疏文件、内部碎片等影响)。
为什么是 --max-depth=1 而不是 -D1
-D1 不是 du 的合法选项——常见误解源于把其他命令参数记混了。正确写法是 --max-depth=1(或简写为 -d1),它限制只统计当前目录及其**一级子目录**,不递归进更深层级,正好对应“各业务文件夹”这一层需求。
加上关键选项确保“真实物理占用”
默认的 du 已按实际磁盘块计算(即物理占用),无需额外开关。但要保证结果清晰可用,推荐组合:
-
-h:以 K/M/G 显示,人眼可读 -
--max-depth=1:只列当前目录下的直接子项(如app/、logs/、data/) -
--exclude(可选):跳过缓存、临时文件等干扰项,例如--exclude="tmp" --exclude=".git"
常用一行命令示例
执行以下任一即可:
- 基础版(含隐藏目录):
du -sh --max-depth=1 . - 排除常见非业务目录:
du -sh --max-depth=1 --exclude={tmp,cache,.git,.svn} . - 按大小倒序排列,快速定位大户:
du -sh --max-depth=1 . | sort -hr
注意区分“物理占用”和“逻辑大小”
如果你怀疑有稀疏文件(如虚拟机镜像、数据库预分配文件)或压缩文件系统(如 btrfs/zfs 压缩),默认 du 显示的是**实际占用的磁盘块数**,这才是真正的物理空间。若想对比“文件标称大小”,才需加 --apparent-size;日常排查磁盘满、清理空间,坚持用默认行为即可。


















