我想对提议的解决方案提出 2 项改进建议:
A. "$arg"/.{jpg,jpeg,png} 中的 for 文件也将产生 "$arg"/.jpeg 如果没有带有 jpeg 扩展名的文件并且会产生脚本错误:
$ echo *.{jpg,jpeg,png}
myPhoto.jpg *.jpeg *.png
为避免这种情况,在 for 循环之前,设置 nullglob 以从列表中删除 null glob:
$ shopt -s nullglob # Sets nullglob
$ echo *.{jpg,jpeg,png}
myPhoto.jpg
$ shopt -u nullglob # Unsets nullglob
B.如果您还想搜索 *.png 或 *.PNG 或 *.PnG(即忽略大小写),则需要设置 nocaseglob:
$ shopt -s nullglob # Sets nullglob
$ shopt -s nocaseglob # Sets nocaseglob
$ echo *.{jpg,jpeg,png}
myPhoto.jpg myPhoto.PnG
$ shopt -u nocaseglob # Unsets nocaseglob
$ shopt -u nullglob # Unsets nullglob