ディレクトリに複数のファイルがある時に、合計したらいくらなのか?
以下のようにコマンドを実行すれば、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

なお、対象ディレクトリより下にディレクトリを掘っていないという前提で作成しています。もし、指定
ディレクトリより下の全てのファイルを対象としたい場合は、修正が必要になります。

広告