by shigemk2

当面は技術的なことしか書かない

ディレクトリにあるファイルサイズの平均を取得するシェルスクリプトを自作してみた

ディレクトリを除く、ディレクトリ内のファイルサイズの平均を取得する

#!/bin/sh
# This script shows file-size average

ls -lF | grep -v / | awk '
{ sum += $5 } END { ave = 0; ave = sum / (NR-1) / 1024; if(ave < 1024) {  printf("%3.2f%s\n", ave, "KB"); } else { ave /= 1024 ; printf("%3.2f%s\n", ave, "MB"); }  }
'

まず

ls -lF | grep -v /

でディレクトリ直下にあるディレクトリ以外のファイルを全て取り出す。
次に、ファイルサイズは$5に格納されているので、各行の$5の総和を計算し、平均を取得する。

{ sum += $5 } END { ave = 0; ave = sum / (NR-1) / 1024;

NR-1しているのは、最初の行にファイルの情報は書かれおらず、1行余計な情報が入っているから。
で、1024で割っているのはKBやMBに対応しようとしたから。

最終的に、0.3KBとか14MBとかそういう値が表示される。

こんな風に作ってみて、多分挙動に問題はないはずだけど、書き方的にどうなんだろうか。