ディレクトリに複数のファイルがある時に、合計したらいくらなのか?
以下のようにコマンドを実行すれば、Byte単位で分かります。
% ls -l Work | awk '{ i += $5 } END{ print i}'
このコマンドでは、結果がByte 表示のため、サイズを調べるのが、面倒。と言う意見がありました。
まあ、たしかにそうですね、そこで、以下のようなスクリプトを作成しました。
スクリプトの後に K、M、Gで単位を指定できます。
#!/bin/bash # ファイルサイズ表示 # # ファイルの単位 unit=$1 # 対象ディレクトリ dire=$2 if [ $# -eq 0 ] ; then echo " Please set Size and directory. Usage : ./filesum.sh {K|M|G} {Directory}" exit 1 fi # ファイルサイズの合計 : size (byte) size=$( ls -l ${dire} | awk '{ i += $5 } END{print i}' ) # echo ${size} if [ ${unit} = K ] ; then size_o=`echo "scale=2 ; ${size} / 1024 " | bc ` elif [ ${unit} = M ] ; then size_o=`echo "scale=2 ; ${size} / 1048576 " | bc ` elif [ ${unit} = G ] ; then size_o=`echo "scale=2 ; ${size} / 1073741824 " | bc ` else echo "Please set size K or M or G . " exit 1 fi echo "Size = " ${size_o} ${unit}"Byte" exit 0
実行例は、以下の通りです。
% ./filesum.sh K /tmp Size = 130.88 KByte
なお、対象ディレクトリより下にディレクトリを掘っていないという前提で作成しています。もし、指定
ディレクトリより下の全てのファイルを対象としたい場合は、修正が必要になります。
コメントを残す