如何让“ncdu”快速显示磁盘使用情况摘要并退出?

如何让“ncdu”快速显示磁盘使用情况摘要并退出?

我想让ncduNCurses 磁盘使用工具分析路径、显示输出并退出,以用于脚本编写。通常它是一个人机交互工具,但我想删除它的人机交互部分。

如果我运行,ncdu /boot我就可以看到我的/boot分区。这是我看到的:

ncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help 
--- /boot -----------------------------------------------------
  100.2 MiB [##########]  initrd.img-5.13.0-28-generic         
  100.2 MiB [######### ]  initrd.img-5.13.0-27-generic
   11.2 MiB [#         ]  vmlinuz-5.11.0-46-generic
    9.7 MiB [          ]  vmlinuz-5.13.0-28-generic
    9.7 MiB [          ]  vmlinuz-5.13.0-27-generic
    9.7 MiB [          ]  vmlinuz-5.13.0-25-generic
    8.0 MiB [          ] /grub
    5.7 MiB [          ]  System.map-5.13.0-28-generic
    5.7 MiB [          ]  System.map-5.13.0-27-generic
    5.7 MiB [          ]  System.map-5.13.0-25-generic
    5.6 MiB [          ]  System.map-5.11.0-46-generic
  252.0 KiB [          ]  config-5.13.0-28-generic
  252.0 KiB [          ]  config-5.13.0-27-generic
  252.0 KiB [          ]  config-5.13.0-25-generic
  252.0 KiB [          ]  config-5.11.0-46-generic
  184.0 KiB [          ]  memtest86+_multiboot.bin
  184.0 KiB [          ]  memtest86+.elf
  180.0 KiB [          ]  memtest86+.bin
!  16.0 KiB [          ] /lost+found
!   4.0 KiB [          ] /efi
@   0.0   B [          ]  initrd.img.old
@   0.0   B [          ]  initrd.img
@   0.0   B [          ]  vmlinuz.old
@   0.0   B [          ]  vmlinuz

现在,我该如何编写脚本来显示此输出,将其存储到变量中以供稍后打印,然后退出?

我想要的是这样的:

output="$(ncdu /boot)"
echo "$output"

目前它挂在第一行,因为我认为它正在等待人机交互。

后续问题:bash:使du显示输出类似于ncdu

答案1

使用 则ncdu无法实现。它使用ncurses库来显示具有交互功能的结果,并且(与例如topwith-b选项不同)它没有直接选项来打印其显示的内容。

但是,它可以打印(或保存到文件)json您需要的所有信息,这些信息可以进行解析:ncdu -o file.json或输出到标准输出:ncdu -o-

我提供了一个python脚本来解析这个类似的输出Unix 操作系统

答案2

ncdu 网页在底部列出了类似的项目,其中之一是透過“磁盘使用率最高”以非交互方式退出,并显示文本摘要(包括最大的嵌套文件)。另一个广东大学确实具有 - ncurses 界面和内置的非交互式退出。

相关内容