写于:2015-11-20		最近一次更新:2016-02-23

Intent:

查找当前目录下最占硬盘空间的5个文件

Oneway:

du -hsx ./* | sort -hr | head -5

Details:

先使用 du -hsx ./* 命令列出当前目录下所有的文件或目录大小 -h参数表示以K,M,G为单位显示文件大小,方便人类阅读 -s参数表示汇总一个目录(包括这个目录下的所有文件和目录) 的总大小,该目录下的文件不再单独参与计算 -x参数表示只统计同一个文件系统中的文件,例如不统计 用NFS挂载的目录文件大小 再使用 sort -hr 命令对 du 的结果进行反向排序 -h参数表示排序时识别计量单位并纳入比较计算,即不再只比较 K,M,G单位前的数字,而是以数字加单位的方式进行比较计算 -r参数表示反向排序,默认是从小到大排序,反向则是从大到小 最后使用 head -5 命令取出排序结果中的前5行数据

Extend:

查看分区容量状态 # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 10190136 6607140 3042324 69% / /dev/sda2 98952796 1899408 92003840 3% /usr/local /dev/sda5 103081248 63029316 34792668 65% /home /dev/sda6 103081248 14915056 82906928 16% /usr/src tmpfs 1972800 0 1972800 0% /dev/shm 可以看到分区 /dev/sda1 已经使用了69%, 现在需要找出 /dev/sda1 上最占硬盘空间的5个文件 但分区 /dev/sda1 挂载的是 / 目录,是根分区 而 du 命令是不关心分区结构的,会把/ 根目录下的 /usr/local,/home,/usr/src,/dev/shm 等目录也纳入计算 但事实上这些目录是挂载在各自单独的硬盘分区上的,是不需要计算的 我们只需要计算分区 /dev/sda1 上最占硬盘空间的文件 所以 du 命令需要排除特定分区再进行计算,即使用 --exclude 参数进行排除 故最终命令如下: # du -hsx /* --exclude=usr/local --exclude=home \ --exclude=usr/src --exclude=dev/shm | sort -hr | head -5 注意:建议在目标目录后加上*号,表示统计其目录下的文件而不统计目标目录自身; 排除参数 --exclude 采用关键字匹配模式,默认以目标目录为起始, 只能使用相对路径,不能使用绝对路径