lsからファイル名とファイルサイズのみ出力する

filelist.sh [file | dir]
引数にファイル、ディレクトリを指定、ない場合はカレントディレクトリを処理。
ディレクトリを再帰的に処理する。
for文のfindコマンドは条件のファイル、ディレクトリ名をfilenameにセットしファイルがある限り繰り返す。
その後ファイルかディレクトリか判定しそれぞれ整形し出力する。
コメント部分はファイルサイズの合計を計算している。

#!/usr/bin/sh
for filename in `find $1`; do
    if [ -d $filename ]; then
        printf "%8s %s\n" dir $filename
    else
        ls -lh $filename | awk '{ printf "%8s %s\n",$5,$9 }'
#        size=`ls -Al $filename | awk '{ print $5 }'`
#        total=`expr $total + $size`
    fi  
done
#echo "Total $total"