linux下按文件大小排序
日常维护中经常遇到磁盘空间告警的问题需要查看具体是那一个或多个文件占用的空间过大,再根据具体情况决定是否需要转移或删除。当然该问题可以通过find指令找出所有超出某大小的所有文件。除了find ,我们还可以使用ls、sort等常用命令快速便捷的确认具体是哪些文件占用光了磁盘。
一、ls查看占用最大的文件
1、S(大写)命令可以按文件从大到小排列(以byte为单位显示的)
1# ls -lS
2total 32772
3-rw-r--r-- 1 root root 18877051 Dec 6 20:32 cms.sql
4-rw-r--r-- 1 root root 7558809 Dec 25 22:21 blog91it.sql
5-rw-r--r-- 1 root root 5053697 Dec 6 20:32 cms.tar.gz
6-rw-r--r-- 1 root root 1977747 Dec 25 22:21 blog91it.tar.gz
7-rw-r--r-- 1 root root 23276 Dec 1 00:33 a.py
8-rw-r--r-- 1 root root 12049 Dec 18 23:09 spir.tar.gz
9-rw-r--r-- 1 root root 7497 Nov 5 01:23 new.py
10-rw-r--r-- 1 root root 5326 Dec 21 19:25 segment.tar.gz
11drwxr-xr-x 4 root root 4096 Dec 19 00:38 py
12drwxr-xr-x 2 root root 4096 Nov 22 23:30 qiniu
13drwxr-xr-x 2 root root 4096 Dec 21 19:24 segment
14-rw-r--r-- 1 root root 1372 Jan 5 21:04 pid.py
15-rw-r--r-- 1 root root 499 Jan 7 21:51 cm.sh
16-rw-r--r-- 1 root root 285 Jan 5 21:29 vms.py
17-rw-r--r-- 1 root root 261 Jan 6 00:12 grep.py
18-rwxr-xr-x 1 root root 113 Jan 5 23:23 vmrss.sh
2、加上r参数可以反向排序(由小到大)
1# ls -lSr
2total 32772
3-rwxr-xr-x 1 root root 113 Jan 5 23:23 vmrss.sh
4-rw-r--r-- 1 root root 261 Jan 6 00:12 grep.py
5-rw-r--r-- 1 root root 285 Jan 5 21:29 vms.py
6-rw-r--r-- 1 root root 499 Jan 7 21:51 cm.sh
7-rw-r--r-- 1 root root 1372 Jan 5 21:04 pid.py
8drwxr-xr-x 2 root root 4096 Dec 21 19:24 segment
9drwxr-xr-x 2 root root 4096 Nov 22 23:30 qiniu
10drwxr-xr-x 4 root root 4096 Dec 19 00:38 py
11-rw-r--r-- 1 root root 5326 Dec 21 19:25 segment.tar.gz
12-rw-r--r-- 1 root root 7497 Nov 5 01:23 new.py
13-rw-r--r-- 1 root root 12049 Dec 18 23:09 spir.tar.gz
14-rw-r--r-- 1 root root 23276 Dec 1 00:33 a.py
15-rw-r--r-- 1 root root 1977747 Dec 25 22:21 blog91it.tar.gz
16-rw-r--r-- 1 root root 5053697 Dec 6 20:32 cms.tar.gz
17-rw-r--r-- 1 root root 7558809 Dec 25 22:21 blog91it.sql
18-rw-r--r-- 1 root root 18877051 Dec 6 20:32 cms.sql
3、加上h参数以更友好的方式显示
1# ls -lhS
2total 33M
3-rw-r--r-- 1 root root 19M Dec 6 20:32 cms.sql
4-rw-r--r-- 1 root root 7.3M Dec 25 22:21 blog91it.sql
5-rw-r--r-- 1 root root 4.9M Dec 6 20:32 cms.tar.gz
6-rw-r--r-- 1 root root 1.9M Dec 25 22:21 blog91it.tar.gz
7-rw-r--r-- 1 root root 23K Dec 1 00:33 a.py
8-rw-r--r-- 1 root root 12K Dec 18 23:09 spir.tar.gz
9-rw-r--r-- 1 root root 7.4K Nov 5 01:23 new.py
10-rw-r--r-- 1 root root 5.3K Dec 21 19:25 segment.tar.gz
11drwxr-xr-x 4 root root 4.0K Dec 19 00:38 py
12drwxr-xr-x 2 root root 4.0K Nov 22 23:30 qiniu
13drwxr-xr-x 2 root root 4.0K Dec 21 19:24 segment
14-rw-r--r-- 1 root root 1.4K Jan 5 21:04 pid.py
15-rw-r--r-- 1 root root 499 Jan 7 21:51 cm.sh
16-rw-r--r-- 1 root root 285 Jan 5 21:29 vms.py
17-rw-r--r-- 1 root root 261 Jan 6 00:12 grep.py
18-rwxr-xr-x 1 root root 113 Jan 5 23:23 vmrss.sh
不过上面的排序,如果仔细观察的话会发现一个问题,就是所有目录显示的大小都是4K (linux默认pagesize的大小 )。如果我们想将目录也算上就要使用du配合sort进行排序了。
二、du和sort排序
1、sort的-h参数
1#当du不加-sh参数时py目录未当做一个整体进行排序,而是将其下的目录也进行了排序
2# du * |sort -h
34 cm.sh
44 grep.py
54 pid.py
64 vmrss.sh
74 vms.py
88 new.py
98 segment.tar.gz
1012 spir.tar.gz
1124 a.py
1228 segment
1360 py/moudle
1468 py/python/pycurl
1584 py/python
16184 py
171932 blog91it.tar.gz
184936 cms.tar.gz
197384 blog91it.sql
2018436 cms.sql
2143412 qiniu
22#加上参数后,可以看到目录都被当做一个整体处理了
23# du * -sh|sort -h
244.0K cm.sh
254.0K grep.py
264.0K pid.py
274.0K vmrss.sh
284.0K vms.py
298.0K new.py
308.0K segment.tar.gz
3112K spir.tar.gz
3224K a.py
3328K segment
34184K py
351.9M blog91it.tar.gz
364.9M cms.tar.gz
377.3M blog91it.sql
3819M cms.sql
3943M qiniu
2、sort -g参数
1# du * |sort -g (效果和du *|sort -h一样)
24 cm.sh
34 grep.py
44 pid.py
54 vmrss.sh
64 vms.py
78 new.py
88 segment.tar.gz
912 spir.tar.gz
1024 a.py
1128 segment
1260 py/moudle
1368 py/python/pycurl
1484 py/python
15184 py
161932 blog91it.tar.gz
174936 cms.tar.gz
187384 blog91it.sql
1918436 cms.sql
2043412 qiniu
21这里du使用-sh参数后,结果确不按大小进行排序了
22# du * -sh|sort -g
231.9M blog91it.tar.gz
244.0K cm.sh
254.0K grep.py
264.0K pid.py
274.0K vmrss.sh
284.0K vms.py
294.9M cms.tar.gz
307.3M blog91it.sql
318.0K new.py
328.0K segment.tar.gz
3312K spir.tar.gz
3419M cms.sql
3524K a.py
3628K segment
3743M qiniu
38184K py
3、sort -h与-g参数的区别
-h参数是GNU coreutils >= 7.5以后新增的参数,-h会以K、M、G这种大小的顺序进行人类便于识别的顺序进行排序。不过在一些老的linux发行版里,sort里可能没有这个参数。这个时候就需要使用-g参数。而du * -sh|sort -h与du * -s|sort -g 的排序效果是相同的。两个参数的具体区别如下:
1-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)
2-g, --general-numeric-sort compare according to general numerical value
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/linux-sort-files-by-size/4041.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.