SoftwareTeacher
2021-04-07 11:36
采纳率: 70%
浏览 788

如何用 awk sed 命令统计一个 Unix 系统中文件大小的分布情况?

Unix History and Memoir

 

今天看了《Unix 传奇》一书,想起很久以前读 Unix 文件系统设计思想的时候,里面提到Unix 的很多文件大小在 4K 以下。 

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Brentbin 2021-04-08 09:44
    已采纳
    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,"%"}'
    已采纳该答案
    评论
    解决 4 无用
    打赏 举报
  • SoftwareTeacher 2021-04-07 11:42

    最好的回答可以获得这本 《Unix 传奇》  :) 

    评论
    解决 1 无用
    打赏 举报
  • weixin_57006925 2021-04-07 22:59

    帮助提问者思考🤔 就不回答了

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题