再帰的な.jpgファイルを別のサイズに変換するスクリプトを作成しました。
echo $re
mkdir "$re"_tmp
for a in *.jpg ; do convert "$a" -resize $re "$re""_tmp/${a%.*} ["$re"].jpg" ; done
png、bmpなどのマルチ拡張サポートを統合したいです。より良い点は次のとおりです。
FILEFORMAT="jpg, JPG, png, PNG, bmp, BMP"
それを作るアイデアはありますか?
PS:re変数は新しいサイズ1024×768(または800×600など)です。
答え1
私が正しく理解した場合jpg
。
for a in *.{jpg,JPG,png,PNG,bmp,BMP}; do
printf '%s\n' "$a"
# do your stuff here
done
{...}
bash 関数が呼び出されます。支柱の拡張。
答え2
スペースで区切られた複数のGLOB式を使用できます。
for a in *.[jJ][pP][gG] \
*.[jJ][pP][eE][gG] \
*.[pP][nN][gG] \
*.[bB][mM][pP]
do
echo "$a" "$re/$a"
done
# or inline
for a in *.[jJ][pP][gG] *.[jJ][pP][eE][gG] *.[pP][nN][gG] *.[bB][mM][pP] ; do echo "$a" "$re/$a"; done
POSIX規格かどうかはわかりませんが、そうだと思います。
答え3
これはPOSIXの苦情のバリエーションです。
for a in *.jp* *.JP*; do
[ -f "$a" ] || continue
echo "Processing $a"
done
- POSIXでは、スペースで区切られた複数のGLOBを配置できます。
- 実際の拡張子は小文字
jpg
または大文字のetherJPG
ですが、大文字と小文字を混在させることはできません。 - ファイルがない場合、
JPG
globは拡張されず、vara
の値はです*.JP*
。 hteファイルがあることを確認してフィルタリングする必要があります。[ -f "$a" ]