Bash
處理多個擴展
我已經完成了將遞歸 .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是新尺寸1024x768(或800x600等)
如果我理解正確,您想處理具有其他副檔名的文件,而不僅僅是
jpg
. 所以你可以試試:for a in *.{jpg,JPG,png,PNG,bmp,BMP}; do printf '%s\n' "$a" # do your stuff here done
{...}
是稱為大括號擴展的 bash 功能。
您可以使用多個用空格分隔的 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 兼容,但我相信它是。