指定されたファイル拡張子を持つファイル サイズを反復的に合計するにはどうすればよいですか?

指定されたファイル拡張子を持つファイル サイズを反復的に合計するにはどうすればよいですか?

ls5 列目の結果を で合計する方法がわかりませんawk。 を追加すると$bytesum+=...、プログラムが明らかに壊れます。何かアイデアはありますか?

bytesum=0
for i in `cat fileextensions.txt | sort | uniq`
do
    ls -Rl "$folder" | grep $i | awk '{bytesum+=$5}; {print $9 " " $5}'
done

echo $bytesum

答え1

GNU find で必要なものは以下のとおりです。

find . -type f -printf '%s\n' | awk '{s+=$0} END{print s+0}'

見つかったもの:

find . -type f -exec stat -c '%s\n' {} \; | awk '{s+=$0} END{print s+0}'

特定のディレクトリ (「フォルダ」は Windows の用語で、UNIX の用語ではディレクトリ) 内の特定の拡張子を持つファイルを検索して統計情報を取得するには、次のようにします。

dir='whatever'
ext='pdf'
find "$dir" -type f -name "*.${ext}" -printf '%s\n'

答え2

bashの場合:

for size in `du *.jpg | cut -f1`; do sum=$((sum+size)); done; echo $sum

これをメイン ループに統合し、私の例の をスクリプト内の.jpg適切な変数に変更します。$i

関連情報