今天看了《Unix 传奇》一书,想起很久以前读 Unix 文件系统设计思想的时候,里面提到Unix 的很多文件大小在 4K 以下。
那么,怎么能用Unix 的awk, sed 和其它 shell 命令统计出你当前 Unix 所有文件大小的分布情况? (小于1K, 1K - 4K, 4K - 1M, 1M - 10M, 10M - 1G, 1G 以上)
今天看了《Unix 传奇》一书,想起很久以前读 Unix 文件系统设计思想的时候,里面提到Unix 的很多文件大小在 4K 以下。
那么,怎么能用Unix 的awk, sed 和其它 shell 命令统计出你当前 Unix 所有文件大小的分布情况? (小于1K, 1K - 4K, 4K - 1M, 1M - 10M, 10M - 1G, 1G 以上)
bins=('0-1k','1k-4k','4k-1m','1m-10m','10m-1g','1g-inf')
ls -Rla | awk '{print $9, $5}' | column -t | awk -v bins_str=$bins 'BEGIN{split(bins_str,bins,",");ttl=0} ($2 <= 1024) {a[1]++} (1024 < $2 && $2 <= 4096) {a[2]++} (4096 < $2 && $2 <= 1048576) {a[3]++} (1048576 < $2 && $2 <= 10485760) {a[4]++} (10485760 < $2 && $2 <= 1073741824) {a[5]++} (1073741824 < $2 ) {a[6]++} {ttl++} END {for(i=0;i<length(a);++i) print bins[i],a[i],"percentiles:",(a[i]/ttl)*100,"%"}'