ncdu 命令

简介

ncdu (NCurses Disk Usage) 是一个基于终端的磁盘使用分析工具,用于可视化文件系统中各个目录和文件的大小。它提供了交互式的界面,可以帮助用户快速定位占用大量磁盘空间的文件和目录。

与传统的 du 命令相比,ncdu 具有以下优势:

  • 交互式界面,操作更加直观
  • 彩色显示,便于识别不同类型的项目
  • 支持排序功能,可以按大小、名称等排序
  • 支持删除功能,可以直接在界面中删除文件
  • 轻量级,占用资源少

安装

Ubuntu/Debian 系统

bash
sudo apt-get install ncdu

CentOS/RHEL/Fedora 系统

bash
# CentOS/RHEL
sudo yum install ncdu
# 或者对于较新版本
sudo dnf install ncdu

macOS 系统

bash
brew install ncdu

Arch Linux 系统

bash
sudo pacman -S ncdu

Windows 系统

bash
# 使用 Chocolatey 安装
choco install ncdu

# 或者使用 Scoop 安装
scoop install ncdu

基本使用

扫描当前目录

bash
ncdu

扫描指定目录

bash
ncdu /path/to/directory

扫描多个目录

bash
ncdu /path/to/dir1 /path/to/dir2

常用参数

  • -0, --null:使用 NULL 字符分隔输出,用于脚本处理
  • -1, --brief:仅显示结果,不进入交互式界面
  • -a, --all:显示隐藏文件和目录
  • -c, --color:使用颜色显示
  • -d DEPTH, --depth=DEPTH:限制扫描深度
  • -e, --exclude-hidden:排除隐藏文件和目录
  • -f FILE, --file=FILE:从指定文件加载扫描结果
  • -h, --human-readable:以人类可读的格式显示大小
  • -i, --include-pattern=PATTERN:仅包含匹配指定模式的文件
  • -o FILE, --output=FILE:将扫描结果保存到指定文件
  • -r, --recursive:递归扫描子目录(默认启用)
  • -s, --si:使用 SI 单位(1000 为基数)显示大小
  • -t, --threshold=SIZE:仅显示大于指定大小的文件
  • -u, --update:重新扫描当前目录
  • -v, --version:显示版本信息
  • -x, --one-file-system:仅扫描当前文件系统

界面说明

ncdu 界面分为三个主要部分:

  1. 顶部信息栏

    • 当前目录路径
    • 扫描进度(如果正在扫描)
    • 总大小统计
  2. 中间文件/目录列表

    • 显示文件和目录的大小
    • 显示文件和目录的名称
    • 使用颜色区分文件类型
  3. 底部功能键提示

    • 显示可用的快捷键和功能

快捷键操作

导航

  • ↑/↓k/j:上下移动光标
  • ←/→h/l:进入/退出目录
  • PageUp/PageDown:翻页
  • Home/End:跳转到列表开头/结尾

操作

  • Enter:进入选中的目录
  • n:按名称排序(升序/降序切换)
  • s:按大小排序(升序/降序切换)
  • c:按项目数排序(升序/降序切换)
  • a:切换显示方式(目录大小/项目大小)
  • d:删除选中的文件或目录
  • i:显示选中项目的详细信息
  • g:切换显示单位(B/K/M/G/T)
  • e:在当前目录下执行命令
  • r:重新扫描当前目录
  • t:切换到树状视图
  • v:显示版本信息
  • q:退出 ncdu

筛选和搜索

  • /:搜索文件或目录
  • f:筛选显示的内容
  • w:切换显示隐藏文件

实际应用场景

查找大文件和目录

bash
# 扫描整个系统,找出占用空间最大的目录
ncdu /

分析特定目录

bash
# 分析 home 目录
ncdu ~/

# 分析服务器日志目录
ncdu /var/log/

保存和加载扫描结果

bash
# 保存扫描结果到文件
ncdu -o disk_usage.txt /

# 加载扫描结果
ncdu -f disk_usage.txt

限制扫描深度

bash
# 只扫描两层目录结构
ncdu -d 2 /

生成报告

bash
# 生成非交互式报告
ncdu -1h /path/to/directory

高级功能

使用正则表达式筛选

bash
# 只显示图片文件
ncdu -i "\.(jpg|jpeg|png|gif)$" /

排除特定目录

bash
# 扫描根目录,但排除 /proc 和 /sys
ncdu --exclude /proc --exclude /sys /

仅扫描特定文件系统

bash
# 只扫描当前文件系统,不跨挂载点
ncdu -x /

结合其他命令使用

bash
# 找出最大的 10 个文件并显示详细信息
ncdu -1 / | sort -hr | head -10

注意事项

  • 扫描大目录时可能需要较长时间,请耐心等待
  • 删除文件操作不可逆,请谨慎使用 d
  • 扫描根目录通常需要管理员权限
  • 长时间扫描可能会影响系统性能
  • 在网络文件系统(如 NFS、SMB)上使用时,性能可能较慢

相关命令

  • du:传统的磁盘使用分析命令
  • df:显示磁盘分区的使用情况
  • find:查找文件和目录
  • ls:列出目录内容
  • duf:另一个现代化的磁盘使用分析工具
  • ncdu:基于终端的交互式磁盘使用分析工具(本文档的主角)
最后更新:2026-02-07