怎么能用Unix 的awk, sed 和其它 shell 命令统计出你当前 Unix/Linux 系统上 所有文件大小的分布情况?

问题遇到的现象和发生背景

怎么能用Unix 的awk, sed 和其它 shell 命令统计出你当前 Unix/Linux 系统上 所有文件大小的分布情况? (小于1K, 1K - 4K, 4K - 1M, 1M - 10M, 10M - 1G, 1G 以上)

我的解答思路
  1. 使用命令列出目录下的所有文件信息
  2. 使用命令过滤出文件名和文件大小的列
  3. 使用命令统计不同文件大小的个数并计算百分比打印
  4. 使用管道把上述1/2/3组合起来

您好,我这边操作了下,相关命令如下:

ls -Rla | awk '{print $9, $5}' | awk '
BEGIN{
    size[0] = " 0K-1K"
    size[1] = " 1K-4K"
    size[2] = " 4K-1M"
    size[3] = " 1M-10M"
    size[4] = "10M-1G"
    size[5] = " 1G+  "
    total = 0
}

($2 <= 1024) {a[0]++} 
(1024 < $2 && $2 <= 4096) {a[1]++} 
(4096 < $2 && $2 <= 1048576) {a[2]++} 
(1048576 < $2 && $2 <= 10485760) {a[3]++} 
(10485760 < $2 && $2 <= 1073741824) {a[4]++} 
(1073741824 < $2 ) {a[5]++} 

{total++} 

END {
    for(i=0;i<length(a);++i) 
        print size[i], "文件个数:", a[i], "百分比:", (a[i]/total)*100,"%"
}'

执行结果如下:

img

如有收获,欢迎采纳。

请看:https://edu.csdn.net/skill/practice/gml-e66e052f98274a60b0eb83273cd089e7/16101?language=gml&materialId=21704