Bash

處理多個擴展

  • December 7, 2021

我已經完成了將遞歸 .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 兼容,但我相信它是。

引用自:https://unix.stackexchange.com/questions/146743