实战
du folder/ # 每个子文件递归,磁盘块数
du -h folder/ # 人类友好
du -sh folder/ # ★ 只看总计(最常用)
du -sh * # 当前目录每个子目录的大小
du -h --max-depth=1 /var # 只看一级深度
常用参数
| 参数 | 含义 |
|---|---|
-h |
人类友好 |
-s |
只汇总(不展开) |
-c |
加一行 total |
--max-depth=N |
限制深度 |
-a |
含每个文件 |
-x |
不跨文件系统 |
--exclude=P |
排除模式 |
--time |
显示最后修改时间 |
-S |
不计子目录("自身"大小) |
找大目录(最常用套路)
# 找 / 下面占用最多的目录
sudo du -h --max-depth=1 / 2>/dev/null | sort -h | tail
# 找 /var 下最大的子目录
sudo du -h --max-depth=2 /var 2>/dev/null | sort -h | tail
# 按 GB / MB 排
sudo du -sh /var/* 2>/dev/null | sort -h
找大文件(不是大目录)
# 大于 100M 的文件
sudo find / -type f -size +100M 2>/dev/null -exec ls -lh {} \; | head
# 或用 du
sudo du -ah /var | sort -h | tail -20
排除
du -sh --exclude='*.log' --exclude='cache' folder/
du -sh -x / # 不跨文件系统(不展开挂载点)
现代替代:ncdu
sudo apt install ncdu
ncdu /var # 交互式磁盘分析
ncdu 是交互式 du——按方向键浏览,按 d 删除,按 q 退出。找占用必备。
坑
- du 报的是磁盘块数,跟
ls -l看到的字节数可能差(稀疏文件 / 文件系统块大小) - du 大目录慢——可以限制
--max-depth - du 不算硬链接——硬链接到的文件只算一次
- du 跟 df 数字可能不一致——见上一篇