我正在寻找一个脚本/程序,它将显示顶部x最大的目录/文件,然后下降到这些文件夹,并显示x最大的目录/文件的可configuration的深度。
231MB bin - 220MB ls - 190MB dir - 15MB def - 3MB lpr - 10MB asd - 1MB link
我怎样才能做到这一点?
你可以看到10个最大的目录:
du -cks *|sort -rn|head
这将以recursion方式累加每个目录中的所有内容的大小 – 但是您必须在每个级别手动执行它以分解每个目录中的内容
你的系统有可能通过你的软件包pipe理器安装或者可用:
graphics:
基于文本:
他们可能不像你指定的那样工作,但他们应该做你需要的大部分。
我对布伦特回答的变化是:
# du -a | sort -rn | head
哪个会给你树中最大的目录或文件。
你可以用find来做一些类似的事情:
# find -maxdepth 2 -type d -exec du -sh {} \;
但是这不会按规模分类,而且速度慢,效率低。 最好写一个parsingdu-a的脚本。
(想要添加这个作为评论布伦特的答案,但没有看到一个链接来做到这一点)我最近有一个类似的问题,如果你只需要检查一个分区有问题,添加一个-x布伦特的答案是非常有用的,特别是如果一些目录有自己的分区。
所以这将是:
du -ckx / | sort -rn | head
要记住人类可读的输出是一个反向数字sorting不会按预期工作,而不修复它。 更快的选项是使用-k开关以千字节为单位输出目录大小信息。
我将简要介绍一下sorting的手册页 – 在某些系统上,您可以使用sort -h
对可读的输出进行sorting。 我已经在CentOS 6.2上用了8.4。 否则,您可以将du -h
的输出redirect到一个文件,并用类似的方法进行sorting:
for i in KMG; do egrep "^[0-9,\.]+${i}" somefile | sort -n; done
这将使您获得整个目录树中排名前十的最大文件/文件夹的可读大小:
du -ah | sort -hr | head
例
1019M . 431M ./prod 195M ./prod/mainprogram 180M ./utils 162M ./prod/subprogram1 157M ./.git 156M ./py 155M ./.git/objects 148M ./.git/objects/pack 128M ./prod/mainprogram/hdf
我不知道这样做的命令行工具(除了其他答案所build议的),但是如果您能够在此机器上运行GUI程序,请尝试使用KDirStat 。 它显示特定根目录下的所有文件和目录的磁盘使用情况,按大小sorting(默认情况下)。