如何找出占用空间最多的目录或文件?

Deq*_*ing 11 linux disk-space shell ubuntu

我的磁盘空间不足:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home
Run Code Online (Sandbox Code Playgroud)

我想遍历整个主目录并找出前 10 个占用空间最多的目录或文件,以决定要删除的对象。

du -sh *可以看到所有子目录的大小,但它只获取当前文件夹。我可能需要分别分成许多子目录并递归地找出我需要的罪魁祸首。

有没有好的方法可以做到这一点?

Rob*_*Rob 10

ncdu是一个命令行选项,用于扫描目录并从高到低列出磁盘使用情况。这是我的首选工具。

您仍然必须以这种方式递归地深入研究,但这是一个很好的简单方法。


mnm*_*mnc 9

使用这个命令:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'
Run Code Online (Sandbox Code Playgroud)

它将在命令行中向您显示某种图形,以百分比形式显示占用大部分空间的目录。

如果您想分析/home唯一的 - 您可以在命令中指定它,如下所示:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'
Run Code Online (Sandbox Code Playgroud)

它看起来像这样: 在此处输入图片说明

取自这里


小智 9

杜| 排序 -rn | 头

  • du = 磁盘使用
  • 使用数字顺序排序,反向
  • 前十行


Uwe*_*nus 5

如果您可以使用 GUI,请尝试Baobab。这是一个用于分析硬盘空间使用情况的图形工具。