在Linux/UNIX/BSD中找出大小最大的10个文件

时间:2019-11-20 08:53:34  来源:igfitidea点击:

在Linux或类似Unix的操作系统上,如何找出目录中最大的10个文件和目录?
如何找出目录中,哪个文件或者目录占用的空间最大?
在Linux中,找出占用空间最大的文件/目录。

在Linux中找出占用空间最多的10个文件

如何在Linux目录中找出大小最大的10个文件和目录:

# du -a /var | sort -n -r | head -n 10

输出示例:

1444976 /var
1257528 /var/cache
1254900 /var/cache/yum/x86_64/7
1254900 /var/cache/yum/x86_64
1254900 /var/cache/yum
719804  /var/cache/yum/x86_64/7/updates
662692  /var/cache/yum/x86_64/7/updates/packages
401904  /var/cache/yum/x86_64/7/base
287720  /var/cache/yum/x86_64/7/base/packages
136368  /var/lib

可以根据需要显示不同的输出格式或者进行排序:

$ cd /path/to/some/where
$ du -hsx * | sort -rh | head -10
$ du -hsx -- * | sort -rh | head -10

其中

  • du -h 选项:指定人类可读单位(例如1K,234M,2G)。
  • du -s 选项:只显示每个参数的总数
  • du -x 选项:跳过不同文件系统上的目录。
  • sort -r 选项:倒序排序
  • sort -h 选项:以数值进行排序
  • head -10 或者 -n 10选项:显示前10行。

上面的命令只能在GNU/sort中使用。

其他类似Unix的操作系统使用下面的方法:

for i in G M K
do 
  du -ah | grep [0-9]$i | sort -nr -k 1
done | head -n 11

输出示例:

179M	.
84M	./uploads
57M	./images
51M	./images/faq
49M	./images/faq/2013
48M	./uploads/cms
37M	./videos/faq/2013/12
37M	./videos/faq/2013
37M	./videos/faq
37M	./videos
36M	./uploads/faq

在Solaris中查找最大的子目录

for dirname in `du -s /home/* | sort -rn | cut -f2- | head -5`
do
  echo ""
  echo larger folder: $dirname
done
exit 0

使用find命令查找最大的文件

执行以下GNU/find命令:

find /path/to/dir/ -printf '%s %p\n'| sort -nr | head -10
find . -printf '%s %p\n'| sort -nr | head -10

输出示例:

73334315 ./git/curl/.git/objects/pack/pack-3061b6415686fdb71de5d7270803d7861964af9d.pack
70533868 ./git/gcc-9.3.0.tar.xz
49090971 ./git/cups/.git/objects/pack/pack-3604587bee5fe321651adbc20f4c4c60d25a9e19.pack
44245968 ./git/binutils-2.35.tar.gz
37101590 ./git/cryptsetup/.git/objects/pack/pack-a58821f7041faa86506f2eceabf349c9ac4b9ff2.pack
33851842 ./git/bash/.git/objects/pack/pack-2a86cd66c81e260f8ae610c031ba76b639070d9f.pack
33106086 ./man/man-to-github-pages/.git/objects/pack/pack-0dea6228f4d7cc5ed4f305a1817b9f40e6eb4a14.pack
28753920 ./tools/heirloom-doctools.tar
24248320 ./man/man-pages-5.08/manhtml.tar
20979436 ./git/gdb-9.2.tar.xz

使用-type f选项,只查找文件:

find /path/to/search/ -type f -printf '%s %p\n'| sort -nr | head -10

或者

find /path/to/search/ -type f -iname "*.tar" -printf '%s %p\n'| sort -nr | head -10

使用du命令查看各个子目录的大小

在Linux中,我们还可以使用du查看文件系统占用的空间大小

du -cks * | sort -rn | head
du -cks -- * | sort -rn | head

输出示例

1225012 total
884044  git
243576  man
94348   tools
2236    linux-man-pages
452     rpmbuild
344     man-1.6-13.g.el7.src.rpm
4       sample.txt
4       initial-setup-ks.cfg
4       anaconda-ks.cfg