如何找出最耗费空间的目录或文件?

如何找出最耗费空间的目录或文件?

我的磁盘空间不足:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

我想浏览整个主目录并找出占用空间最大的 10 个目录或文件,以决定删除哪些。

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

有什么好办法吗?

答案1

如果你可以使用 GUI,请尝试猴面包树.这是一个分析硬盘空间使用情况的图形工具。

答案2

北卡罗莱纳大学是一个命令行选项,用于扫描目录并按从高到低的顺序列出磁盘使用情况。这是我的首选工具。

您仍然需要通过这种方式递归地进行深入研究,但这是一个很好的简单方法。

答案3

使用此命令:

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"}'

它将在命令行中向您显示一种图表,以百分比显示占用最多空间的目录。

如果您想要分析/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"}'

它看起来会像这样: 在此处输入图片描述

取自这里

答案4

+1 为 Baobab。在命令行上,我通常只使用du -hcsx *du -hcsx * | sort -h(需要较新版本的sort),然后在继续时检查子目录。

此外,mc还有一个巧妙的功能,即通过按下 + 来计算子目录的大小(按下Ctrl+可以计算所有子目录的大小。然后您可以在菜单中选择按大小排序。SpaceCtrlSpace..

相关内容