Macターミナル: サブディレクトリをループしてすべての画像を最適化する

Macターミナル: サブディレクトリをループしてすべての画像を最適化する

画像がいっぱい入ったサブフォルダがたくさんあるフォルダがあります。例として添付画像をご覧ください。

代替

基本的に、すべての画像をループして、画像の幅が 1024 ピクセルを超えないようにサイズを縮小します。すべて jpeg です。

私はSIPSコマンドを知っています。

sips -Z 1024 *.png

ただし、これはすべての画像が現在のディレクトリにある場合にのみ機能します。

すべてのサブディレクトリをトラバースするにはどうすればいいでしょうか?

答え1

find で実行できます:find images/path -type f -name '*.png' -exec sips -Z 1024 {} \;

Find は、'images/path' ディレクトリ内で png 拡張子 (-name '*.png') を持つファイル (-type f) を検索し、パラメータでコマンドを実行します。"{}" をファイル名に置き換えます。コマンドは "\;" で終了する必要があります。

答え2

私は小さなbashスクリプトを変更してうまくいきました

#!/bin/bash

find "foldername" -type f | \
while read file ; do
    echo "processing ${file}"
    sips -Z 2000 ${file}
done

関連情報