实战

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 数字可能不一致——见上一篇