我有一个当前的脚本来获取文件夹中的所有.jpg和.jpeg文件,我的bash脚本如下
shopt -s nullglob
CURRENT_IMAGE_FILES=($DIR/*.jpg $DIR/*.jpeg)
echo ${#CURRENT_IMAGE_FILES[@]}
shopt -u extglob
输出的结果如下(1.jpg,3.jpg,5.jpg,2.jpeg,4.jpeg)。因为serach首先跟随所有.jpg,然后找到其余的.jpeg。
这个代码的问题是,它先获取所有的jpg文件,然后获取所有的jpeg文件。然而,我想获得所有jpg和jpeg文件的增量,如下所示(1.jpg,2.jpeg,3.jpg,4.jpeg,5.jpg)
一旦设置了extglob
,它就和一样简单
shopt -s nullglob extglob
CURRENT_IMAGE_FILES=("$DIR"/*.@(jpg|jpeg))
由于单个模式将匹配所有目标文件,因此它们将被一起排序,而不是先排序只匹配*.jpg
的文件,然后排序匹配*.jpeg
的文件。当然,只有当文件名的格式正确时,排序才会起作用。10.jpg
仍然会出现在1.jpg
之前,但仅使用globs并不能对此做太多。