変数 "files" に渡される file1、file2、file3 ファイルを含む "directory1" というディレクトリがあります。 echo $files の出力は次のとおりです。 file1 file2 file3。サイズの合計が必要ですが、以下のコードは1つのファイルでのみ機能します。すべてのファイルで動作させるにはどうすればよいですか?
ls -l ./$dir/$files | awk '{t+=$5}END{print t}'
答え1
ループを使用してファイルサイズをバイト単位で印刷し、stat
出力を合計することができますawk
。
for i in $files; do
stat -c '%s' "$dir/$i"
done | awk '{t+=$1}END{print t}'
答え2
次のようなさまざまな方法でこれを実行できます。
まずそのディレクトリに移動し、そこからコマンドを実行し、$ fileがすでに見つかったので、グローバル拡張をオフにします。
cd "$dir" ;set -f
stat -c '%s' $files | paste -sd+ | bc -l
du --apparent-size -abc $files | tail -n 1
perl -E '$s += -s for @ARGV;say $s' $files