あなたはこのようにそれを行うことができます。
#!/bin/bash
# Make output directory
mkdir output
shopt -s nullglob
for f in *.jpg *.jpeg *.png; do
base=${f%.*}
ext=${f##*.}
echo Converting $f to output/$base -2500 -1440 -640 $ext
convert "$f" -resize 2500 -write "output/${base}-2500.${ext}" \
-resize 1440 -write "output/${base}-1440.${ext}" \
-resize 640 "output/${base}-640.${ext}"
done
サンプル出力
Converting test.jpg to output/test -2500 -1440 -640 jpg
Converting z.jpg to output/z -2500 -1440 -640 jpg
Converting z2.jpg to output/z2 -2500 -1440 -640 jpg
Converting z3.jpg to output/z3 -2500 -1440 -640 jpg
Converting z4.jpg to output/z4 -2500 -1440 -640 jpg
Converting z1.jpeg to output/z1 -2500 -1440 -640 jpeg
Converting a.png to output/a -2500 -1440 -640 png
Converting black.png to output/black -2500 -1440 -640 png
Converting c.png to output/c -2500 -1440 -640 png
Converting d.png to output/d -2500 -1440 -640 png
Converting f2.png to output/f2 -2500 -1440 -640 png
Converting gantt.1.png to output/gantt.1 -2500 -1440 -640 png
Converting globe.png to output/globe -2500 -1440 -640 png
Converting h.png to output/h -2500 -1440 -640 png
Converting output.png to output/output -2500 -1440 -640 png
Converting result.png to output/result -2500 -1440 -640 png
Converting result2.png to output/result2 -2500 -1440 -640 png
shopt -s null glob
は確実に何jpg
ファイル、またはディレクトリ内png
ファイル、それが存在しない場合はグロブ(*.jpg
または*.png
)は、エラーメッセージを生成するのではなく、何も展開しません。さらに詳しい情報here。
ext=${f##*.}
は、基本的にファイル拡張子であるピリオド(完全停止)の後に最短のものを見つけます。これは「bashパラメータ置換」と呼ばれ、私が知っている最良の説明はhereです。
Cool!ありがとう! 'shopt -s nullglob'と' ext = $ {f ## *。} 'について説明できますか? – allegutta
確かに、申し訳ありません!私は私の答えを更新します... –
ありがとう!素晴らしい答え! :) – allegutta