2016-08-16 5 views
0

私は毎週クローンジョブで実行することで最適化する何千もの画像を持っています。私の問題は、CPUを下げる最適化された画像も検索するということです。どのように私は最後のスキャン/最適化を保存し、この日付の後にファイルとフォルダを最適化し始めましたか?jpegoptim最後に実行したシェルを保存し、この日付以降にファイルやフォルダをチェックします。

マイコード

find . -name '*.jpg' | xargs jpegoptim --strip-all 
find . -name '*.jpg' | xargs jpegoptim --all-progressive 
chmod -R 777 * 
+0

'find | 'xargs'は実際には' find'側に '-print0'を使い、' xargs'側に '-0'を使う以外は実際には安全ではありません(残念なことに、これらは両方とも非POSIXオプションですが、幸いにも、世界のGNUとBSDの両方の側面)。 'xargs'は、ファイル名の引用符とスペースを構文的に扱うので、ファイル名が厳密に管理されていなければ元のコードを使用すれば、少なくとも内容が失われる可能性があります。 –

+1

ところで、 'chmod 777'は**非常に**悪い習慣です。あなたのシステム上のすべてのユーザーに、「誰もが含まれていない」ファイルへの書き込み許可は、そのソフトウェアが潜在的に悪質なデータを処理していると考えられるため、オペレーティングシステムが信頼できないユーザーとして実行していることを意味します**あなたのコンテンツに'ssh'はハンドシェークプロセスの早い段階で(リモートシステムの認証情報が認証される前に)コードを実行します。原則として、 'o + w'は*決して*するべきではありません。これは' o + wx'には二重に当てはまります。 –

+0

(今では、 'chroot'などのような他のサンドボックスがしばしばありますが、Linuxのchrootはバイパスするのがはるかに容易です。サンドボックスデーモンの信頼できないコンポーネントを 'nobody'として実行することは意味がありません)。 –

答えて

1

は行うには簡単なことでは最新の処理時間を追跡するファイルをタッチすると、そのファイルよりも新しいコンテンツへ自分自身を制限するfindを伝えることです。

他に進む前に、一方のモードでjpegoptimのすべての呼び出しを完了し、我々は二つの別々のパスを実行していた前のセマンティクスを、維持するために:

#!/bin/bash 

extra_args=() 
[[ -e last-scan ]] && extra_args=(-newer last-scan) 

find . -name '*.jpg' "${extra_args[@]}" -exec jpegoptim --strip-all '{}' + 
find . -name '*.jpg' "${extra_args[@]}" -exec jpegoptim --all-progressive '{}' + 
touch last-scan 

代替案としては、考慮してください。

#!/bin/bash 

extra_args=() 
[[ -e last-scan ]] && extra_args=(-newer last-scan) 

find . -name '*.jpg' "${extra_args[@]}" \ 
    -exec sh -c 'jpegoptim --strip-all "[email protected]"; jpegoptim --all-progressive "[email protected]"' _ '{}' + 

touch last-scan 

この後者のアプローチでは、を1回だけ実行してから、ファイルの各バッチをシェルに渡します。これは、responsibですそのバッチの各モードで順番にjpegoptimを実行してください。


は最後に:私たちは直接jpegoptimの両方のコピーを開始する単一findパスを持って、ここで

#!/bin/bash 

extra_args=() 
[[ -e last-scan ]] && extra_args=(-newer last-scan) 

find . -name '*.jpg' "${extra_args[@]}" \ 
    -exec jpegoptim --strip-all '{}' + \ 
    -exec jpegoptim --all-progressive '{}' + 
touch last-scan 

;:jpegoptimは、同時使用のために安全である場合は、次の操作を行うことができここでのリスクは、jpegoptim --strip-alljpegoptim --all-progressiveが同時に同じファイルに対して安全に動作できない場合、これはひどく動作する可能性があることです。

+0

サブフォルダ 'find images/-name '* .jpg" – karadayi

+0

@ karadayi、...内を検索するには、単語は "サブディレクトリ"です。 「フォルダ」はWindowsismです –

関連する問題