问题遇到的现象和发生背景
怎么能用Unix 的awk, sed 和其它 shell 命令统计出你当前 Unix/Linux 系统上 所有文件大小的分布情况? (小于1K, 1K - 4K, 4K - 1M, 1M - 10M, 10M - 1G, 1G 以上)
我的解答思路
- 使用命令列出目录下的所有文件信息
- 使用命令过滤出文件名和文件大小的列
- 使用命令统计不同文件大小的个数并计算百分比打印
- 使用管道把上述1/2/3组合起来
怎么能用Unix 的awk, sed 和其它 shell 命令统计出你当前 Unix/Linux 系统上 所有文件大小的分布情况? (小于1K, 1K - 4K, 4K - 1M, 1M - 10M, 10M - 1G, 1G 以上)
您好,我这边操作了下,相关命令如下:
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,"%"
}'
执行结果如下:
如有收获,欢迎采纳。