繰り返しサムネイルの作成と移動

繰り返しサムネイルの作成と移動

以下を実行するbashスクリプトが必要です。

  • 現在のディレクトリから下に画像(jpg、jpeg、JPG、JPEG)を繰り返し検索します。
  • imagemagickの変換を使用してサムネイルを生成する
  • サムネイルを別のディレクトリに移動

私の現在のスクリプトは次のとおりです。

for f in `find . -type f -iname "*.jpg"`
  do
  convert ./"$f" -resize 800x800\> ./"${f%.jpg}_thumb.jpg"
  mv ./"${f%.jpg}_thumb.jpg" /home/user/thumbs/
done

スペース/特殊文字を含むファイル(またはすべての内容を含むフォルダ)は変換されません。私は試しましたが役に立ちprint0ませんでした。

ベストアンサー1

出力を繰り返さないでくださいfind。あなたが経験している問題は、この状況の典型的な結果です。

あなたの例は、ファイルの名前変更のために少しトリッキーです。非常に効率的ではありませんが、安全なアプローチは、次のようにファイルごとに追加オプションを使用すること-execです。findsh

find . -type f -iname "*.jpg" -exec sh -c 'echo convert "$1" -resize 800x800\> /home/user/thumbs/"${1%.jpg}_thumb.jpg"' -- {} \;

同じ名前を使用することをお勧めします(.jpg代わりにサフィックスを使用_thumb.jpg)、次の単純な形式が機能し、より効率的です。

find . -type f -iname "*.jpg" -exec echo convert "{}" -resize 800x800\> /home/user/thumbs/"{}" \;

echoコマンドを実行する前に、出力を確認するためにステートメントを追加しました。出力が良く見える場合は削除してください。

おすすめ記事