处理多个扩展

Pol*_*len 9 bash filenames wildcards

我已经完成了将递归 .jpg 文件转换为其他大小的脚本:

echo $re
mkdir "$re"_tmp
for a in *.jpg ; do convert "$a" -resize $re "$re""_tmp/${a%.*} ["$re"].jpg" ; done
Run Code Online (Sandbox Code Playgroud)

我想更好地集成多扩展支持:png、bmp 等:

FILEFORMAT="jpg, JPG, png, PNG, bmp, BMP"
Run Code Online (Sandbox Code Playgroud)

有什么想法来建造它吗?

PS:变量 re 是新尺寸 1024x768(或 800x600 等)

cuo*_*glm 12

如果我理解正确,您想处理具有其他扩展名的文件,而不仅仅是jpg. 所以你可以试试:

for a in *.{jpg,JPG,png,PNG,bmp,BMP}; do
  printf '%s\n' "$a"
  # do your stuff here
done
Run Code Online (Sandbox Code Playgroud)

{...}是 bash 功能称为大括号扩展

  • @Gnouc - 你确定这不仅仅是一个交互式 shell 吗?此外,即使没有,如果`#!` 用于`sh`,它也很可能不起作用。这样做会简单得多:`set -- *.[jJ][pP][gG] *.[bB][mM][pP] *.[pP][nN][gG]; for pic do...;done` 它将根据需要将文件列表保留在 `"$@"` 中以用于多个进程循环。 (2认同)