我有一个当前脚本来获取文件夹中的所有.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)
答案 0 :(得分:0)
设置extglob
后,它就像
shopt -s nullglob extglob
CURRENT_IMAGE_FILES=("$DIR"/*.@(jpg|jpeg))
由于单个模式将匹配所有目标文件,因此它们将被排序在一起,而不是对仅匹配*.jpg
的文件进行排序,然后对匹配*.jpeg
的文件进行排序。当然,排序仅在文件名格式正确时才有效。 10.jpg
仍然会在1.jpg
之前出现,但是你只能使用globs做很多事情。