2

基本的に私がやりたいのは、作業ディレクトリを再帰的に検索し、指定されたパスを使用して画像のサイズを変更することです。たとえば、すべての* .jpgファイルを検索し、それらのサイズを300x300に変更して、名前をwhatever.jpgに変更します。

$(find | grep *.jpg)パスを取得するために、の線に沿って何かを行う必要がありますか?これを行うと、出力は引用符で囲まれていないディレクトリになります。つまり、役立つ前にそれらを挿入する必要があります。

4

2 に答える 2

6

私は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からの結果の単なるダミーファイル名です。

于 2014-11-19T10:46:14.410 に答える
1

GNU findでは、次のようなものを使用できます。

find . -iname \*jpg -exec /your/image/conversion/script.sh {} +

これにより、見積もりの​​点でより安全になり、生成されるプロセスが少なくなります。スクリプトが引数リストの長さを処理できる限り、このソリューションが最も効率的なオプションになるはずです。

非常に長いファイルリストを処理する必要がある場合は、代償を払ってより多くのプロセスを生成する必要があります。検索を変更して、各ファイルを個別に処理できます。例えば:

find . -iname \*jpg -exec /your/image/conversion/script.sh {} \;
于 2012-07-15T18:19:03.027 に答える