基本的に私がやりたいのは、作業ディレクトリを再帰的に検索し、指定されたパスを使用して画像のサイズを変更することです。たとえば、すべての* .jpgファイルを検索し、それらのサイズを300x300に変更して、名前をwhatever.jpgに変更します。
$(find | grep *.jpg)
パスを取得するために、の線に沿って何かを行う必要がありますか?これを行うと、出力は引用符で囲まれていないディレクトリになります。つまり、役立つ前にそれらを挿入する必要があります。
私はfindでmogrifyを使用します。
たとえば、ネストされたfolder / another / folder/*。jpg内のすべてが*.pngにある必要があります。
find . -name "*.jpg" -print0|xargs -I{} -0 mogrify -format png {}
&&少し説明します:
find . -name *.jpeg
--ネストされたフォルダ内のすべてのjpegを検索します。
-print0
-厄介な驚きなしに目的のファイル名を印刷する(例:ファイル名をスペースで区切る)-mogrify
xargs -I {} -0
を使用してファイルを1つずつ処理する
最後に、これらの{}は、findからの結果の単なるダミーファイル名です。
GNU findでは、次のようなものを使用できます。
find . -iname \*jpg -exec /your/image/conversion/script.sh {} +
これにより、見積もりの点でより安全になり、生成されるプロセスが少なくなります。スクリプトが引数リストの長さを処理できる限り、このソリューションが最も効率的なオプションになるはずです。
非常に長いファイルリストを処理する必要がある場合は、代償を払ってより多くのプロセスを生成する必要があります。検索を変更して、各ファイルを個別に処理できます。例えば:
find . -iname \*jpg -exec /your/image/conversion/script.sh {} \;