私はそのようなイメージを含む各ディレクトリ内のすべて.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