【Linux命令004】 怎么让文件按照大小排序?

Scroll Down

Linux最有用最常用的统计文件大小命令是什么?无疑就是du了。

一般我们常用 du -sh 来统计当前文件夹内容总大小。

du -sh [文件夹1] [文件1] 
->  统计当前目录下的文件夹或文件大小

du -sh /usr/local 
->  显示指定目录大小

怎么排序文件夹下的文件呢?

du -a / | sort -n -r 
->  搜搜整个磁盘,按照文件大小倒序排序(含隐藏文件)

怎么在指定目录取排名前10的大文件呢?

du -h /home/yao | sort -n -r | head -n 10
-> 查找/home/yao目录下 从大到小的10个文件; 
-> sort -n -r 也可以写作 sort -rn;
 > -n:依照数值的大小排序;
-> -r:以相反的顺序来排序;

怎么找指定目录下第一层的文件呢?不想找子目录下的。

du -m --max-depth=1 /home/yao | sort -n -r | head -n 10
-> 指定目录第一层(意味着不取子目录中数据),筛选前10,可读方式展现文件大小
-> -m: 统计单位为MB
-> 为什么不用-h?sort大小排序只看数字,不看单位,可能会导致2G反而在200M之下的排序。

如果想把文件查询结果导出来细细排查怎么办?

du -m --max-depth=1 /home/yao | sort -rn -o 'sort.txt' | head -n 10
-> 使用sort -o 参数将排序结果存入指定文件 

最后,能不能批量把这些找出的文件删除呢?使用 管道符 “|” + xargs + rm -rf。

du -h /home/yao | sort -n -r | head -n 10 | xargs rm -rf