awkはディレクトリ内の特定のファイルを探します

awkはディレクトリ内の特定のファイルを探します

変数 "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

関連情報