我的磁盘空间不足:
$ 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..