Pngquantで処理したい画像がたくさんあります。それらはかなり深いディレクトリ構造で編成されているため、手動ですべてのディレクトリにcd
を実行してpngquant -ext .png -force 256 *.png
を実行するのは非常に時間がかかります
このコマンドを現在のディレクトリ内のすべてのディレクトリのすべての* .pngで実行する方法はありますか?
ディレクトリの深さが限られていて、ファイルが多すぎない場合は、遅延ソリューション:
pngquant *.png */*.png */*/*.png
標準ソリューション:
find . -name '*.png' -exec pngquant --ext .png --force 256 {} \;
そしてマルチコアバージョン:
find . -name '*.png' -print0 | xargs -0 -P8 -L1 pngquant --ext .png --force 256
どこ -P8
はCPUの数を定義し、-L1
は、1回のpngquant呼び出しで処理する画像の数を定義します(私は-L4
(プロセスの開始時に保存する小さな画像がたくさんあるフォルダの場合)。
fish Shell を使用すると、プロジェクトディレクトリのルートから以下を実行できます
pngquant **.png
-or8.png
や-fs8.png
などの拡張子を持つ新しいファイルが生成されます。
既存のファイルを上書きしたい場合は、
pngquant **.png --ext .png --force