我必须调整图像大小,并想即时重命名它们名称如下
我想在两个数字之间注入4k,例如
目前我只知道在最后添加4k,如下所示:
for img in ./Compet-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9].jpg do;
convert "$img" -resize "3840x2160^" \
-gravity center \
-crop 3840x2160 \
"${img%.jpg}-4k.jpg"
done
根据原始文件名,有时可以精确修剪不需要的一半:
head=${img%-*.jpg}
tail=${img#./Compet-*-}
newimg=$head-4k-$tail
另一种方法是使用=~
以下方法应用正则表达式匹配:
re='^\./(Compet-[0-9]+)-([0-9]+\.jpg)$'
if [[ $img =~ $re ]]; then
newimg=${BASH_REMATCH[1]}-4k-${BASH_REMATCH[2]}
convert "$img" ... "$newimg"
fi
Bash 使用“POSIX 扩展正则表达式”正则表达式语法,捕获组放置在 BASH_REMATCH 数组中。
我使用了一个变量来保存正则表达式模式,因为[[ ]]
否则右侧的引用/转义规则可能会有点难看。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句