$ terminals _

dust

更直观的磁盘使用分析工具

GitHub brew install dust

简介

dust(du + Rust = dust)是经典 du 命令的现代替代品,用 Rust 编写,能以直观的树形图和柱状图展示磁盘使用情况。相比 du 输出的纯文本数字列表,dust 让你一眼就能看出哪些目录和文件占用了最多空间。

dust 自动按大小排序输出,使用终端宽度绘制比例柱状图,并以人类可读的单位显示文件大小。它默认显示目录树结构,清晰呈现空间占用的层级关系。无需复杂的参数组合和管道命令,一条 dust 命令即可完成过去需要 du | sort | head 才能实现的效果。

安装

# macOS
brew install dust

# Ubuntu/Debian
sudo apt install du-dust

# Cargo
cargo install du-dust

核心特性

  • 可视化输出: 用柱状图直观展示各目录的空间占比
  • 树形结构: 以目录树形式展示空间占用层级
  • 自动排序: 默认按大小降序排列,最大的目录一目了然
  • 智能单位: 自动使用合适的单位(KB/MB/GB/TB)
  • 快速扫描: Rust 实现,大目录扫描速度优异
  • 权限友好: 遇到无权限目录会优雅跳过而非报错

使用示例

# 分析当前目录的磁盘使用
dust

# 分析指定目录
dust /usr/local

# 限制显示的目录层级深度
dust -d 2

# 限制显示条目数量
dust -n 10

# 显示表观大小(而非磁盘占用)
dust -s

# 反转排序(从小到大)
dust -r

# 忽略隐藏文件
dust -i

# 仅显示文件(不显示目录)
dust -f

# 仅显示目录
dust -D

# 分析多个路径
dust /home /var /tmp

# 以字节为单位显示
dust -b

典型场景

场景一:磁盘快满了——快速定位占用大户

服务器 / 存储报警,快速找到罪魁祸首:

# 从根目录找最大的目录(限 2 层)
dust -d 2 /

# 只看 /var 下的情况(日志通常在这里)
dust -d 3 /var

# 找出超过 1GB 的目录
dust / | grep -E "^\s+[0-9]+G"

场景二:清理开发环境的依赖缓存

node_modules、.gradle、pip 缓存往往是磁盘杀手:

# 看看家目录各子目录的占用
dust -d 1 ~

# 找出所有 node_modules 目录的大小
dust -d 0 $(find ~ -name "node_modules" -maxdepth 5 -type d 2>/dev/null)

# 清理前确认大小
dust ~/.cache
dust ~/Library/Caches   # macOS

场景三:对比清理前后效果

# 记录清理前的大小
dust -d 2 ~ > before.txt

# 执行清理操作...
# rm -rf node_modules
# brew cleanup
# docker system prune

# 清理后对比
dust -d 2 ~
diff before.txt <(dust -d 2 ~)

推荐搭配

  • eza — 查看目录内容和大小
  • fd — 查找大文件后用 dust 分析空间占用
  • btop — 监控整体磁盘使用情况