ls
5 列目の結果を で合計する方法がわかりません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