如何使用终端显示主目录中目录的磁盘使用情况?

如何使用终端显示主目录中目录的磁盘使用情况?

有人能告诉我应该使用哪种工具吗?我正在尝试在 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 工具的简短提示。)

参见gdmapfilelight(或baobab)。两者都提供了非常有趣的图表,为了获得最佳的直观视图,值得尝试将其gdmap与另外两个之一结合起来。

答案2

我使用“du -c | sort -n | tail”来查看哪些目录占用了最多的空间。与你问的不太一样,但我觉得它非常有用。

相关内容