有人能告诉我应该使用哪种工具吗?我正在尝试在 Ubuntu Server VM 上运行它。所以我相信我需要一个像 discus 这样的工具。
答案1
用作基于屏幕的终端程序(curses/ncurses 等):
参见ncdu
示例输出:
ncdu 1.10 ~ Use the arrow keys to navigate, press ? for help
--- /usr/share/icons -----------------------------------------------------------
189.2MiB [##########] /oxygen
169.3MiB [######## ] /hicolor
130.2MiB [###### ] /HighContrast
123.9MiB [###### ] /gnome
74.0MiB [### ] /nuvola
57.9MiB [### ] /Faience
46.5MiB [## ] /Breathe
46.1MiB [## ] /Faenza-Blue-Dark2
43.2MiB [## ] /AwOken
40.1MiB [## ] /elementary-xfce
31.9MiB [# ] /AwOkenDark
26.4MiB [# ] /elementary
Total disk usage: 1.7GiB Apparent size: 1.4GiB Items: 308833
用于终端逐行文本模式:
显示子目录的排序大小和文件在当前目录中:
(对于不显示文件,请参见下文)
在包含您要测量的目录的目录中运行此命令,
在您的示例中为 $HOME:
du -sch .* * | sort -hr | less
或者,只需使用更详细的长选项形式即可执行相同的命令:
du --summarize --total --human-readable .* * | sort --human-numeric-sort --reverse | less
这表明
du
-磁盘使用情况在当前目录中,-s
(--summarize
)- 显示每件商品的总价值,-c
(--total
)- 以及每个项目所有值的总和,-h
(--human-readable
) - 显示大小为 6.8G、4.0K、5M 等,而不是字节数,.*
- 列出以点作为第一个字符的文件和目录,*
- 以及所有其他文件和目录,| sort -hr
- 对结果进行排序,以相反的顺序处理人类可读的文件大小,| less
- 并在寻呼机中显示结果列表,最大的显示在最上面。
笔记:根据所使用的 shell 及其选项,.*
在没有以 开头的文件名的目录中使用.
可能会导致错误。在这种情况下,.*
是多余的,可以省略(这就是错误试图告诉您的)
输出行的示例(按原始排序顺序):
39G total 7.7G Downloads 6.8G .local 3.4G .mozilla 2.6G .thunderbird 1.6G dev 1.4G .cache 490M work 7.3M AnInterestingPaper.pdf 60K .bazaar 8.0K .gitconfig 4.0K .tigrc
为了准确回答这个问题,需要将文件从列表中删除。这通常会使列表更易读,因此值得这样做;但在 shell 中手动输入命令时则不行,因为它有点长。因此,在脚本等中使用时:
用于find
仅列出目录(不要使用find . -foo
目录参数的通用语法,以防止./
结果列表中的文件名带有前缀):
find .* * -maxdepth 0 -type d -print0 | du --files0-from=- -sch | sort -hr | less
与使用图形桌面(不是所要求的终端):(
没有要求,但为了完成任务,添加了关于良好 GUI 工具的简短提示。)
参见gdmap
和filelight
(或baobab
)。两者都提供了非常有趣的图表,为了获得最佳的直观视图,值得尝试将其gdmap
与另外两个之一结合起来。
答案2
我使用“du -c | sort -n | tail”来查看哪些目录占用了最多的空间。与你问的不太一样,但我觉得它非常有用。