2016-08-08 2 views
2

既に最適化されている場合は、ファイルをスキップする方法はありますか?画像の画像ディレクトリを持っているので、何千もの処理に時間がかかっイメージが既に最適化されているかどうかを確認します

find '*.png' -print0 | xargs optipng -nc -nb -o5 -quiet -preserve -dir ~/images/output -log ~/optpng.log 

その:私はPNG画像の最適化を実行するには、次のコマンドを使用しています

私に解決策を提案してください。

+0

サイズと解像度の比を指定できます。したがって、すべての画像について、そのサイズと解像度を確認し、この画像を最適化する必要があるかどうかを判断することができます。 –

+0

しかし、私のイメージディレクトリは、パンくず、輪郭、背景などのようなイメージのサイズが異なります。 – Renjith

答えて

1
 
find -name "*png" -type f |while read FILE 
do 
    echo $FILE 
    BASEFILE=$(basename $FILE) 
    optipng $FILE > /tmp/$$.out 
    TEST=$(cat /tmp/$$.out |grep "optimized" |wc -l) 
    if [ $TEST -gt 0 ] 
    then 
     echo "$BASEFILE is already optimized" 
    else 
     echo "$BASEFILE NOT is already optimized" 
     cp $BASEFILE ~/destination_dir 
    fi 

done 

0

あなたは、マルチコアマシンを持っている場合(8枚の画像optipngプロセスごとに言うことによって)(-P 4と並行して、一度に4と言う)、それらを並行して行うと、すべてのファイルのための新しいプロセスを起動しないで考えてみましょう:

find ... | xargs -n 8 -P 4 optipng ... 

GNUパラレルを使用できます。

+0

申し訳ありませんがマーク、私はあなたのポイントをしなかった、私は必要なのは、現在optipngコマンドは、すでに最適化されていてもすべてのファイルに対して実行されています。それ以外の方法は、新しく追加されたファイルだけを検索して実行する方法です。 – Renjith

+0

'find 'コマンドに' -mtime'オプションを追加すると 'man find'が実行されます。 –

+0

申し訳ありません、mtimeを使用できません.Jenkinsの仕事の一部として設定したいです。 – Renjith

関連する問題