Ubuntu 22.04 ncdu 安装与命令参数详解

在 Ubuntu 22.04 上从零安装 ncdu 1.15.1(在线 apt 与离线 deb 两种方式),并逐条实测全部命令行参数与交互式 TUI 真实输出,附与 CentOS 1.22 的版本差异(含 --exclude 目录语义)与命令速查表

Linux 文件管理与传输ncduUbuntu 22.042026/10/07

Ubuntu 22.04 ncdu 安装与命令参数详解

目标:说明 ncdu 这一交互式 TUI 磁盘用量分析工具在 Ubuntu 22.04(x86_64)上的完整安装(在线 apt 与离线 deb 两种方式)、全部命令行参数与 JSON 导入导出能力的逐条实测结果,以及 ncdu 1.15.1 与新版(如 CentOS 的 1.22)的版本差异说明(重点是 --exclude 仅匹配目录名的实测语义),已在真实环境中逐条实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04 LTS(amd64 / x86_64)
  • 测试主机名:fm-ubuntu2204
  • 工具版本:ncdu 1.15.1(Debian 包版本 1.15.1-1,实测 ncdu --version 输出 ncdu 1.15.1)
  • CPU 核数:6 核
  • 内存:31.3G / 交换 2.00G(实测 free -h)
  • 安装来源仓库:Ubuntu 官方仓库 archive.ubuntu.com(jammy/universe,实测 apt-cache policy 显示 500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages)
  • 说明:本次采集日志未记录内核版本(uname -r)与 IP,故本节仅列出日志中可确证的信息,不臆造。

二、工具概览

ncdu(NCurses Disk Usage)是一个基于 ncurses 库的交互式磁盘用量分析工具,由 Yoran Heling 开发并维护。它以全屏 TUI 界面展示指定目录的磁盘占用树,是传统 du 命令的交互式增强版。

相比 du,ncdu 的核心优势在于:

  • 交互式浏览:方向键在目录树中上下移动、回车进入子目录,实时查看每个目录 / 文件的占用大小与百分比;
  • JSON 导入导出:-o 把扫描结果导出为 JSON 文件,-f 导入后离线浏览,适合定时扫描归档后对比;
  • 灵活排除:--exclude / -X 支持按模式排除目录,扫描结果更聚焦(注意:1.15.1 的模式只匹配目录名,实测细节见 5.6~5.8);
  • 单位与配色:默认按 1024 进制显示(KiB/MiB),--si 切换为 1000 进制(kB/MB),--color 支持深色终端配色。

Ubuntu 22.04 的官方仓库(jammy/universe)提供 ncdu 1.15.1,直接 apt-get install 即可,无需添加第三方源。本文档下文所有命令均以 root 用户在本机终端执行,交互式界面输出使用 script 以文本帧方式捕获,帧中的终端控制序列已剥离、扫描进度条等瞬态残留已忽略,仅保留稳定可见的内容。

三、在线安装

3.1 查看当前包状态

命令:dpkg -l ncdu 查看 ncdu 是否已安装及其精确包版本。

dpkg -l ncdu
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version          Architecture Description
+++-==============-================-============-==================================================
ii  ncdu           1.15.1-1         amd64        ncurses disk usage viewer

说明:ii 表示已安装(installed),包全名为 ncdu,版本是 1.15.1-1(1.15.1 为上游版本、-1 为 Debian 打包版本),架构 amd64。

3.2 在线安装 / 重装

命令:apt-get install 安装 ncdu;已安装时可用 --reinstall 强制重装(真实回显如下)。

apt-get install -y --reinstall ncdu
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 10 not upgraded.
Need to get 43.4 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 ncdu amd64 1.15.1-1 [43.4 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 43.4 kB in 1s (39.5 kB/s)
(Reading database ... 10804 files and directories currently installed.)
Preparing to unpack .../ncdu_1.15.1-1_amd64.deb ...
Unpacking ncdu (1.15.1-1) over (1.15.1-1) ...
Setting up ncdu (1.15.1-1) ...

说明:Get:1 行的仓库路径 jammy/universe 确证包来自官方 universe 仓库;包体仅 43.4 kB,体积小巧、依赖极少。debconf: delaying package configuration, since apt-utils is not installed 是本机未安装 apt-utils 时的正常提示,不影响安装结果。

3.3 在线安装后的版本验证

命令:ncdu --version 验证。

ncdu --version
ncdu 1.15.1

四、离线安装

离线场景(目标机无法联网)下,可在可联网机器上先把 deb 包下载下来,再拷贝到目标机用 dpkg -i 安装。ncdu 依赖极少,主包即可独立安装。

4.1 下载 deb 包到指定目录

命令:apt-get install --download-only 只下载不安装,配合 -o Dir::Cache::archives=... 指定下载目录。

mkdir -p /root/off-ncdu
apt-get install -y --download-only --reinstall -o Dir::Cache::archives=/root/off-ncdu ncdu
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 10 not upgraded.
Need to get 43.4 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 ncdu amd64 1.15.1-1 [43.4 kB]
Fetched 43.4 kB in 1s (33.8 kB/s)
Download complete and in download only mode
W: Download is performed unsandboxed as root as file '/root/off-ncdu/partial/ncdu_1.15.1-1_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

💡 说明:Download complete and in download only mode 表示只下载未安装。末尾 W: 警告是因为 root 把下载目录建在非 _apt 属主的位置,apt 提示「以 root 身份非沙箱下载」,属权限提示、不影响下载与后续安装。已装最新版时需加 --reinstall 才会重新下载。

4.2 离线包清单

命令:ls -l 查看下载目录,确认 deb 包已就位。

ls -l /root/off-ncdu
total 48
-rw-r----- 1 root root     0 Oct  6 17:26 lock
-rw-r--r-- 1 root root 43376 Aug  9  2020 ncdu_1.15.1-1_amd64.deb
drwx------ 2 _apt root  4096 Oct  6 17:26 partial

说明:主包文件为 ncdu_1.15.1-1_amd64.deb(43376 B);lock 与 partial/ 是 apt 缓存机制生成的临时项,拷贝离线包时只取 .deb 即可。

4.3 离线安装

命令:dpkg -i 直接安装本地 deb 包(真实回显如下)。

dpkg -i /root/off-ncdu/ncdu_1.15.1-1_amd64.deb
(Reading database ... 10804 files and directories currently installed.)
Preparing to unpack .../ncdu_1.15.1-1_amd64.deb ...
Unpacking ncdu (1.15.1-1) over (1.15.1-1) ...
Setting up ncdu (1.15.1-1) ...

4.4 离线安装后的版本验证

ncdu --version
dpkg -l ncdu
ncdu 1.15.1
ii  ncdu           1.15.1-1         amd64        ncurses disk usage viewer

五、全部命令参数实测

以下是 ncdu 1.15.1 全部命令行参数的逐条实测。交互式界面输出通过 script 捕获为文本帧,命令统一以 timeout 5 script -qc "TERM=xterm ncdu <参数> /root/t-ncdu" 方式采集。测试目录 /root/t-ncdu 结构如下(du -sh 实测 7.1M):

/root/t-ncdu
├── big.bin              5.0 MiB(5242880 B 随机数据)
├── hello.txt            6 B
├── passwd.bak           1275 B(/etc/passwd 副本)
├── .hiddenfile          0 B(隐藏文件)
├── .hiddendir/          隐藏目录
│   └── secret.conf      6 B
└── sub1/
    ├── medium.bin       2.0 MiB(2097152 B)
    ├── world.log        6 B
    ├── .hidden/         空隐藏目录
    └── sub2/
        └── deep.txt     5 B

5.1 -v / -V / --version:打印版本

作用:输出 ncdu 版本号后退出。1.15.1 中 -v、-V、--version 三个写法等价。

ncdu -v
ncdu -V
ncdu --version
ncdu 1.15.1
ncdu 1.15.1
ncdu 1.15.1

5.2 -h / --help:打印帮助与全部可用参数

作用:打印命令行帮助,列出 1.15.1 支持的完整选项清单(实测全文如下,较 1.22 的按组排版更简短)。

ncdu --help
ncdu <options> <directory>

  -h,--help                  This help message
  -q                         Quiet mode, refresh interval 2 seconds
  -v,-V,--version            Print version
  -x                         Same filesystem
  -e                         Enable extended information
  -r                         Read only
  -o FILE                    Export scanned directory to FILE
  -f FILE                    Import scanned directory from FILE
  -0,-1,-2                   UI to use when scanning (0=none,2=full ncurses)
  --si                       Use base 10 (SI) prefixes instead of base 2
  --exclude PATTERN          Exclude files that match PATTERN
  -X, --exclude-from FILE    Exclude files that match any pattern in FILE
  -L, --follow-symlinks      Follow symbolic links (excluding directories)
  --exclude-caches           Exclude directories containing CACHEDIR.TAG
  --exclude-kernfs           Exclude Linux pseudo filesystems (procfs,sysfs,cgroup,...)
  --confirm-quit             Confirm quitting ncdu
  --color SCHEME             Set color scheme (off/dark)

说明:1.15.1 的帮助是单组平铺结构(1.22 分 Mode / Scan / Interface 三组);-q 没有长形式 --slow-ui-updates、--color 只支持 off/dark(1.22 才支持 dark-bg)。注意帮助中没有 -a、-s、--max-depth、--hide-hidden 参数,实测结果见 5.9、5.11、5.12 小节。

5.3 默认视图(不带参数)

作用:默认参数扫描并进入交互界面。实测文本帧(已剥离控制序列、忽略扫描进度残留)如下:

ncdu /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 12

说明:默认即显示隐藏文件(.hiddendir、.hiddenfile 在列);/sub1 是目录(大小为其内部文件合计 2.0 MiB),其余为文件。底部 Total disk usage: 7.0 MiB 为磁盘占用总量,Apparent size: 7.0 MiB 为文件逻辑大小(小文件因块对齐实际占用 4096 B,故两项常不一致),Items: 12 为扫描到的条目总数。[#] 为占用图列。

5.4 -x / --one-file-system:不跨文件系统

作用:限制扫描不跨越文件系统边界,避免把挂载在目录树下的其它分区 / 伪文件系统一并计入。

ncdu -x /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 12

说明:测试目录全部位于同一文件系统,故结果与默认一致;若目录下挂载了 /proc、/sys 等其它文件系统,-x 会停止进入这些挂载点,防止把内核伪文件系统计入磁盘占用。

5.5 -e / --extended:启用扩展信息

作用:启用扩展信息收集(访问时间等)。1.15.1 没有 --show-mtime 之类参数(那是 1.22 的),扩展信息仅在交互界面内按键切换时体现,默认列表与不启用时一致。

ncdu -e /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 12

说明:实测帧与默认完全一致。注意 -e 的真实含义是「启用扩展信息」而非「不显示隐藏文件」;1.15.1 默认就显示隐藏文件,也没有 --hide-hidden 参数(见 5.12)。

5.6 --exclude PATTERN:按模式排除(1.15.1 只匹配目录名)

作用:排除匹配指定 glob 模式的文件 / 目录(可多次指定)。重要实测发现:1.15.1 的排除模式只匹配目录名,对文件名的模式完全无效。

ncdu --exclude '*.log' /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 12

说明:测试树中有 sub1/world.log(6 B),但 --exclude '*.log' 后 Items 仍为 12、总量不变——模式 *.log 命中的是文件名,1.15.1 不会排除文件。补充实测:--exclude hello.txt、--exclude '*.bin'、--exclude '*.txt' 均同样无效(Items 不变),只有命中目录名的模式才生效(见 5.7、5.8)。

5.7 -X / --exclude-from FILE:从文件读取排除模式

作用:从指定文件逐行读取排除模式(每行一个),适合批量维护排除清单。本机 /root/excl-patterns 内容为 *.log 与 sub2(两个模式):

ncdu -X /root/excl-patterns /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 11

说明:模式 sub2 命中了嵌套目录 sub1/sub2(目录名匹配生效),其子项 deep.txt 不再计入,Items 由 12 减为 11;顶层列表不变(sub2 在折叠的 /sub1 内部,不占顶层行)。*.log 对文件 world.log 无效,与 5.6 结论一致。

5.8 --exclude 排除目录:显示 < 占位且不再深入

作用:当排除模式命中顶层目录时,该目录在列表中显示为 < 前缀的 0.0 B 占位符,内部条目全部消失。

ncdu --exclude sub1 /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
<   0.0   B [          ]  sub1
    0.0   B [          ]  .hiddenfile
 Total disk usage:   5.0 MiB  Apparent size:   5.0 MiB  Items: 7

说明:--exclude sub1 后 sub1 变成 < 0.0 B 占位符,其内部 5 个条目(medium.bin、world.log、.hidden、sub2、deep.txt)不再计入,总量从 7.0 MiB 骤降至 5.0 MiB;Items 12 - 5 = 7(占位符本身仍计 1)。被排除目录仍列在清单中以便知晓其存在,但不再展开、不占空间。

5.9 --max-depth:限制扫描深度(1.15.1 不支持)

作用:限制扫描的最大目录深度。实测 ncdu 1.15.1 无此参数,直接报错:

ncdu --max-depth 1 /root/t-ncdu
ncdu: Unknown option '--max-depth'.

⚠️ 注意:--max-depth 并非 ncdu 的命令行参数(帮助中未列出)。限制深度的需求可改用 --exclude 排除深层目录,或在 TUI 界面内折叠子目录实现。

5.10 -q:安静模式(2 秒刷新)

作用:把扫描 / 界面刷新间隔降低到 2 秒,适合扫描超大目录时减少终端刷新开销。

ncdu -q /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 12

说明:扫描进度条的刷新频率降为每 2 秒一次(默认约 1 秒),数据结果与默认一致。1.15.1 中 -q 没有长形式。

5.11 -a / -s:1.15.1 不存在的参数(实测报错)

作用:历史 / 其它版本中 -a 曾用于「显示文件」、-s 曾用于「汇总输出」,但 ncdu 1.15.1 均不支持,实测如下:

ncdu -a /root/t-ncdu
ncdu: Unknown option '-a'.
ncdu -s /root/t-ncdu
ncdu: Unknown option '-s'.

⚠️ 注意:1.15.1 直接报 Unknown option 退出。1.15.1 中「显示文件 / 汇总」能力由默认行为(目录与文件同列表展示、底部自动汇总)覆盖,无需额外参数。

5.12 --hide-hidden:默认隐藏隐藏文件(1.15.1 不支持)

作用:默认隐藏以 . 开头的文件与目录。实测 ncdu 1.15.1 无此参数(1.22 才有),直接报错:

ncdu --hide-hidden /root/t-ncdu
ncdu: Unknown option '--hide-hidden'.

⚠️ 注意:1.15.1 默认显示隐藏文件(见 5.3 帧),想隐藏需在进入界面后按键切换显示,命令行没有对应参数。

5.13 --si:以 1000 进制(SI)显示单位

作用:把单位从二进制(1024)切换为十进制(1000),即 MiB → MB、KiB → kB。

ncdu --si /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.2 MB  [##########]  big.bin
    2.1 MB  [####      ] /sub1
    8.2 KB  [          ] /.hiddendir
    4.1 KB  [          ]  passwd.bak
    4.1 KB  [          ]  hello.txt
    0.0  B  [          ]  .hiddenfile
 Total disk usage:   7.4 MB  Apparent size:   7.4 MB  Items: 12

说明:同一文件在两种单位下的读数不同:big.bin 由 5.0 MiB(1024³ 进制)显示为 5.2 MB(1000³ 进制),总量由 7.0 MiB → 7.4 MB。

5.14 --color SCHEME:配色方案

作用:指定界面配色,1.15.1 取值 off / dark(1.22 才支持 dark-bg;默认自动判断)。

ncdu --color dark /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 12

说明:--color dark 采用深色终端配色(数据与默认一致,颜色差异在文本帧中不可见);--color off 强制关闭颜色,适合纯文本 / 脚本环境。

5.15 -o 导出 / -f 导入:JSON 扫描结果交换

作用:-o FILE 把扫描结果导出为 JSON 文件;-f FILE 导入后离线浏览,便于定期归档对比。

ncdu -o /tmp/ncdu-scan.json /root/t-ncdu
/root/t-ncdu/.hiddendir/secret.conf                                      3 files

说明:导出结束后打印末条扫描路径与文件数(3 files)。查看 JSON 内容:

cat /tmp/ncdu-scan.json
[1,1,{"progname":"ncdu","progver":"1.15.1","timestamp":1791307413},
[{"name":"/root/t-ncdu","asize":4096,"dsize":4096,"dev":95,"ino":29622668},
[{"name":".hiddendir","asize":4096,"dsize":4096,"ino":29622681},
{"name":"secret.conf","asize":6,"dsize":4096,"ino":29622707}],
[{"name":"sub1","asize":4096,"dsize":4096,"ino":29622675},
{"name":"medium.bin","asize":2097152,"dsize":2097152,"ino":29622714},
[{"name":"sub2","asize":4096,"dsize":4096,"ino":29622676},
{"name":"deep.txt","asize":5,"dsize":4096,"ino":29622720}],
{"name":"world.log","asize":6,"dsize":4096,"ino":29622715},
[{"name":".hidden","asize":4096,"dsize":4096,"ino":29622688}]],
{"name":"passwd.bak","asize":1275,"dsize":4096,"ino":29622701},
{"name":"big.bin","asize":5242880,"dsize":5242880,"ino":29622689},
{"name":".hiddenfile","ino":29622702},
{"name":"hello.txt","asize":6,"dsize":4096,"ino":29622694}]]

说明:JSON 首元素 [1,1,{...}] 中 1 为格式版本号(1.22 为版本 2),且每个条目含 ino 字段(inode 号,1.22 无此字段);asize 为 apparent size(逻辑大小)、dsize 为 disk usage(块占用),big.bin 的 asize=5242880(5 MiB)与 dsize 一致,小文件则 dsize 固定为 4096,passwd.bak 的 asize=1275。再以 -f 导入浏览:

ncdu -f /tmp/ncdu-scan.json
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help        [imported]
--- /root/t-ncdu ---------------------------------------------------------------
    5.0 MiB [##########]  big.bin
    2.0 MiB [####      ] /sub1
    8.0 KiB [          ] /.hiddendir
    4.0 KiB [          ]  passwd.bak
    4.0 KiB [          ]  hello.txt
    0.0   B [          ]  .hiddenfile
 Total disk usage:   7.0 MiB  Apparent size:   7.0 MiB  Items: 12

说明:导入模式标题栏出现 [imported] 标记,列表与扫描结果一致;此时无需访问磁盘即可浏览历史快照,适合对已归档的 JSON 反复分析。

六、常见问题与真实行为

6.1 现象:ncdu -a、ncdu -s、ncdu --max-depth、ncdu --hide-hidden 报 Unknown option

原因:这四个参数均非 ncdu 1.15.1 的命令行参数(帮助中未列出;-a / -s 来自其它版本历史用法,--max-depth / --hide-hidden 是 1.22 才新增)。解决:显示文件与汇总为默认行为;限制深度可用 --exclude 排除深层目录;隐藏文件可在界面内按键切换显示。

6.2 现象:--exclude '*.log' 完全无效,日志文件一个都没排除

原因:1.15.1 的排除模式只匹配目录名,不匹配文件名(实测 *.log、hello.txt、*.bin、*.txt 等文件模式全部无效,Items 不变)。这与 1.22 不同(1.22 可排除文件,被排除文件带 < 前缀且 Items 不减)。解决:1.15.1 上想排除日志 / 缓存,请让模式命中目录名(如 --exclude '*.log' 对名为 logs/ 的目录有效),或升级 ncdu。

6.3 现象:被排除目录以 < 前缀占位符显示,内部条目消失

原因:ncdu 的目录排除是「不深入 + 占位显示」:命中的目录显示 < 0.0 B,其内部文件不再计入大小与 Items(占位符本身计 1 条)。解决:顶层排除用 --exclude 目录名,嵌套目录排除同样生效(见 5.7 的 Items 12→11)。

6.4 现象:磁盘占用(disk usage)大于文件逻辑大小(apparent size)

原因:小文件按文件系统块对齐占用(如 6 B 的 hello.txt 实际占用 4096 B),故 dsize ≥ asize;稀疏文件、压缩文件系统场景则相反。解决:关注磁盘是否吃紧时看 Total disk usage,关注文件真实内容大小时看 Apparent size。

6.5 版本差异速览:ncdu 1.15.1(Ubuntu 22.04)vs 1.22(CentOS 8)

对比项Ubuntu 22.04(ncdu 1.15.1)CentOS 8(ncdu 1.22)
JSON 格式版本[1,1,{...}](格式版本 1,条目含 ino 字段)[1,2,{...}](格式版本 2,无 ino)
--exclude 语义模式只匹配目录名;文件模式完全无效;排除目录显示 < 占位、Items 减少文件也可排除;被排除文件带 < 前缀且 Items 不减
隐藏文件控制无 --hide-hidden(报 Unknown option),仅界面内按键切换--hide-hidden 参数支持
--show-mtime无此参数支持(需配合 -e)
--enable-shell / --enable-delete / --enable-refresh无(仅 -r 只读)支持(可在界面内执行 shell / 删除 / 刷新)
--color 取值off / darkoff / dark / dark-bg
--apparent-size、--group-directories-first、--sort 等不支持支持
-q 长形式无(仅 -q)-q / --slow-ui-updates
帮助结构单组平铺分 Mode / Scan / Interface 三组
-a / -s / --max-depth均不支持(报 Unknown option)均不支持(报 Unknown option)
包来源Ubuntu 官方仓库 jammy/universe(1.15.1-1)EPEL(ncdu-1.22-1.el8)

6.6 现象:文本捕获帧存在扫描进度残留与换行错位

原因:交互式 TUI 通过 script 捕获为文本帧时,ncurses 的扫描进度条、边框绘制符号会以瞬态形式留在帧中;本文档展示时已剥离终端控制序列并忽略进度条 / 边框残留行。解决:读取帧内容时以有意义的字段(大小、名称、合计、Items)为准。

七、命令与参数速查表

参数/命令含义实测说明/默认值
ncdu -v / -V / --version打印版本实测输出 ncdu 1.15.1
-h / --help打印帮助单组平铺列出全部选项(1.15.1)
-f FILE导入扫描结果导入后标题栏显示 [imported],无需读盘
-o FILE导出 JSON 扫描结果格式版本 1、条目含 ino;与 -f 成对使用
-e / --extended启用扩展信息默认列表无变化,界面内按键切换体现
-x / --one-file-system不跨文件系统扫描到挂载点即停止深入
-q安静模式刷新间隔 2 秒;无长形式
-r只读模式禁删除
-0 / -1 / -2扫描进度 UI 级别0=none、2=full ncurses
--si1000 进制单位7.0 MiB → 7.4 MB
--exclude PATTERN排除匹配模式的目录1.15.1 只匹配目录名,文件模式无效
-X / --exclude-from FILE从文件读取排除模式每行一个;实测 *.log+sub2 → Items 12→11
--exclude-caches排除含 CACHEDIR.TAG 的目录缓存目录标准标记
--exclude-kernfs排除 procfs/sysfs/cgroup 等扫描 / 时强烈建议
-L / --follow-symlinks跟随符号链接(不含目录)防止链接到外部目录递归爆炸
--confirm-quit退出前确认防止误按 q 退出
--color SCHEME配色off / dark(1.15.1 无 dark-bg)
-a / -s / --max-depth / --hide-hidden—1.15.1 不支持,均报 Unknown option
apt-get install -y ncdu在线安装源为 jammy/universe
apt-get install -y --download-only -o Dir::Cache::archives=<目录> ncdu离线只下载不安装生成 ncdu_1.15.1-1_amd64.deb
dpkg -i ncdu_1.15.1-1_amd64.deb离线安装本地 deb实测回显见第四章

八、卸载方式

在线安装的 ncdu 使用 apt-get 卸载:

apt-get remove -y ncdu

如需连同配置文件一起彻底清除:

apt-get purge -y ncdu

离线场景(使用 dpkg -i 安装)可先用 dpkg -l ncdu 确认包状态,再执行上述 apt-get remove/purge,或直接 dpkg -r ncdu。卸载后可用 which ncdu 或 ncdu --version 确认已移除。

💡 说明:ncdu 为交互式命令工具,无守护进程与开机自启项,卸载后无需额外清理服务;其用户配置文件位于 ~/.config/ncdu/ncdu.conf,如彻底清理需一并删除。

Ubuntu 22.04 ncdu 安装与命令参数详解 - Quzuo