JPEGを含む各ディレクトリの各ディレクトリのJPEG画像の合計サイズを取得します。

JPEGを含む各ディレクトリの各ディレクトリのJPEG画像の合計サイズを取得します。

私はそのようなイメージを含む各ディレクトリ内のすべて.jpgの/ imagesの各ディレクトリの合計サイズを取得しようとしています。.jpeg完全なディレクトリパスを表示します。

私が見つけた様々なものからこれを一つにまとめました。

for i in $(tree -dfi --noreport); do
  find . \( -iname "*.jpg" -or -iname "*.jpeg" \) -type f -exec du -c {} \; $i
done

しかし、エラーが発生します。

find: paths must precede expression

私が間違っていることを知っている人はいますか?
それとも私のニーズに合わせてbashの代替案を提案できますか?

次のように変更すると、同じエラーが発生します。

for i in $(tree -dfi --noreport); do
  find $i \( -iname "*.jpg" -or -iname "*.jpeg" \) -type f -exec du {} \; $i
done

ベストアンサー1

for i in $(tree -dfi --noreport); do
    find $i -type f \( -iname "*.jpg" -or -iname "*.jpeg" \) -exec du {} \;
done

コマンドの最後にパス名を入力すると、検索がfind高速-typeになるように、そのオプションが他のオプションの前に表示される必要があります。これはトリックを行う必要があります。

ところで、あなたを助けるために私はこれを行います:

for i in $( tree -dfi --noreport ); do 
    find $i -maxdepth 1 -type f \( -iname "*.jpg" -or -iname "*.jpeg" \) -exec du '{}' \; | awk -v d=$i '{ j+=$1; } END{ printf("%s: %d\n", d, j) }' | grep -Ev ": 0$"
done

おすすめ記事