Eu tenho que redimensionar imagens e quero renomeá-las rapidamente Os nomes são como seguir
- Competir-210-123456.jpg
- Compet-210-123457.jpg
- ...
- Compet-211-123555.jpg e
Eu gostaria de injetar 4k entre dois números como
- Competir-211- 4k -123555.jpg
atualmente eu sei apenas adicionar 4k no final como segue:
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
Dependendo do nome do arquivo original, às vezes é possível cortar com precisão a metade desnecessária:
O outro método é aplicar uma correspondência de regex usando
=~
:O Bash usa a sintaxe regex "POSIX Extended Regular Expression" e os grupos de captura são colocados na matriz BASH_REMATCH.
Eu usei uma variável para manter o padrão regex porque as regras de citação / escape para o lado direito
[[ ]]
podem ficar um pouco feias de outra forma.