查找最大的目录/文件recursion

我正在寻找一个脚本/程序,它将显示顶部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:

  • 猴面包树 – 又名磁盘使用分析器 – Gnome(应用程序>附件或应用程序>系统工具)
  • KDirStat – KDE
  • Filelight – KDE
  • TreeSize for Unix – GTK2

基于文本:

  • ncdu – ncurses
  • GT5 – 文本浏览器(l,,W3M等 – 自动select) – 它实际上是一个shell脚本!

他们可能不像你指定的那样工作,但他们应该做你需要的大部分。

我对布伦特回答的变化是:

 # 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(默认情况下)。