如何在Linux/UNIX/BSD上查找最大的前10个文件和目录

时间:2020-01-09 14:16:41  来源:igfitidea点击:

如何在Linux或类似Unix的操作系统上找到最大的顶级文件和目录?
有时有必要知道哪些文件或目录正在占用您的所有磁盘空间。
此外,可能需要在文件系统上的特定目录位置(例如/tmp /或/var /或/home /)中找到它。
此教程将帮助您使用Unix和Linux命令查找文件系统上最大或最大的文件或目录。

如何找出Linux或Unix上排名前10的文件和目录

没有简单的命令可以找到Linux/UNIX/BSD文件系统上最大的文件/目录。
但是,结合以下三个命令(使用管道),您可以轻松地找到最大文件的列表:

在Linux中查找最大目录的步骤

  • du命令:估计文件空间使用量。
  • sort命令:对文本文件或给定的输入数据行进行排序。
  • head命令:输出文件的第一部分,即显示前10个最大的文件。
  • find命令:搜索文件。

如何在Linux中查找顶级目录和文件

在shell提示符下执行以下命令以找出前10个最大的文件/目录:

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

输出示例:

1008372 /var
313236  /var/www
253964  /var/log
192544  /var/lib
152628  /var/spool
152508  /var/spool/squid
74688   /var/log/squid
62544   /var/cache

如果您希望获得更多人类可读的输出,请尝试(仅适用于GNU/Linux du版本/用户):

$ 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 选项:比较人类可读的数字。这仅是GNU排序特定的选项。
  • head 命令-10 OR -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

使用find命令在目录及其子目录中查找最大的文件

执行以下GNU/find命令:

## Warning: only works with GNU find ##
find /path/to/dir/ -printf '%s %p\n'| sort -nr | head -10
find . -printf '%s %p\n'| sort -nr | head -10

输出示例:

5700875 ./images/faq/2013/11/iftop-outputs.gif
5459671 ./videos/faq/2013/12/glances/glances.webm
5091119 ./videos/faq/2013/12/glances/glances.ogv
4706278 ./images/faq/2013/09/theitroad.local.linux.wallpapers_r0x1.tar.gz
3911341 ./videos/faq/2013/12/vim-exit/vim-exit.ogv
3640181 ./videos/faq/2013/12/python-subprocess/python-subprocess.webm
3571712 ./images/faq/2013/12/glances-demo-large.gif
3222684 ./videos/faq/2013/12/vim-exit/vim-exit.mp4
3198164 ./videos/faq/2013/12/python-subprocess/python-subprocess.ogv
3056537 ./images/faq/2013/08/debian-as-parent-distribution.png.bak

您可以跳过目录,仅显示文件,执行:

## How to Find Out Top Directories and Files (Disk Space) in Linux Using Find ##
find /path/to/search/ -type f -printf '%s %p\n'| sort -nr | head -10

或者

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

用鸭子搜寻磁盘空间猪

让我们在以下bash shell别名的帮助下,使用Linux或Unix中的磁盘空间找出顶级目录和文件:

## shell alias ##  
alias ducks='du -cks * | sort -rn | head'
## deal with special files names ##
alias ducks='du -cks -- * | sort -rn | head'

按以下方式运行以获取占用磁盘空间的前10个文件/目录:

$ ducks

在Linux或类Unix系统上查找最大的文件/目录