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 *可以看到所有子目录的大小,但它只获取当前文件夹。我可能需要分别分成许多子目录并递归地找出我需要的罪魁祸首。
有没有好的方法可以做到这一点?
使用这个命令:
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)
它看起来像这样:

取自这里。
| 归档时间: |
|
| 查看次数: |
62954 次 |
| 最近记录: |