ncdu (ncurses du)
这个很棒的 CLI 实用程序允许您以交互方式轻松查找大文件和目录(递归总大小)。
例如,从a well known open source project 的根内部我们这样做:
sudo apt install ncdu
ncdu
结果如下:
然后,我在键盘上向下和向右输入以进入/drivers 文件夹,我看到了:
ncdu 只在启动时对整个树递归计算一次文件大小,因此效率很高。
“总磁盘使用量”与“表观大小”类似于du,我已经在why is the output of `du` often so different from `du -b`进行了解释
项目主页:https://dev.yorhel.nl/ncdu
相关问题:
在 Ubuntu 16.04 中测试。
Ubuntu 列表根目录
你可能想要:
ncdu --exclude-kernfs -x /
地点:
-
-x 停止跨越文件系统障碍
-
--exclude-kernfs 跳过像 /sys 这样的特殊文件系统
MacOS 10.15.5 列表根目录
要在该系统上正确列出根/,我还需要--exclude-firmlinks,例如:
brew install ncdu
cd /
ncdu --exclude-firmlinks
否则它似乎进入了一些链接无限循环,可能是由于:https://www.swiftforensics.com/2019/10/macos-1015-volumes-firmlink-magic.html
我们为爱而学习的东西。
ncdu非交互式使用
ncdu 的另一个很酷的功能是您可以先以 JSON 格式转储大小,然后再重复使用它们。
例如生成文件运行:
ncdu -o ncdu.json
然后以交互方式检查它:
ncdu -f ncdu.json
如果您正在处理像 NFS 这样非常大且速度较慢的文件系统,这将非常有用。
这样,您可以先只导出一次,这可能需要几个小时,然后浏览文件、退出、再次浏览等。
输出格式只是 JSON,因此很容易在其他程序中重复使用,例如:
ncdu -o - | python -m json.tool | less
揭示了一个简单的目录树数据结构:
[
1,
0,
{
"progname": "ncdu",
"progver": "1.12",
"timestamp": 1562151680
},
[
{
"asize": 4096,
"dev": 2065,
"dsize": 4096,
"ino": 9838037,
"name": "/work/linux-kernel-module-cheat/submodules/linux"
},
{
"asize": 1513,
"dsize": 4096,
"ino": 9856660,
"name": "Kbuild"
},
[
{
"asize": 4096,
"dsize": 4096,
"ino": 10101519,
"name": "net"
},
[
{
"asize": 4096,
"dsize": 4096,
"ino": 11417591,
"name": "l2tp"
},
{
"asize": 48173,
"dsize": 49152,
"ino": 11418744,
"name": "l2tp_core.c"
},
在 Ubuntu 18.04 中测试。