Uma boa solução é fazer um conjunto de backups (por exemplo, prefixado backup-
), girar os arquivos originais produzindo um conjunto de novos arquivos (por exemplo rotated-
, prefixados ), fornecendo um conjunto de
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ...e assim por diante
O mv
/ cp
tools [bash globbing] só pode adicionar prefixos, é confuso removê-los (ele usaria expansão de parâmetros, ewww ...)
A rename
ferramenta permite que você use a s/before/after/
sintaxe de substituição (da sed
ferramenta) para trocar esse prefixo de proteção e substituir os arquivos originais; portanto, seu processo geral para um determinado conjunto de imagens img-
{1..n}.png
seria:
for imgf in img-*.png; do mv "$imgf" "backup-$imgf"; done
for imgf in backup-img-*.png; do convert "$imgf" -rotate 90 "rotated-$imgf"; done
Nota:
- você poderia usar em
cp
vez de mv
, mas existem 2 cópias do original (a desvantagem é a concatenação de prefixos, " rotated-backup-
...")
- a rotação é no sentido horário (
-rotate 270
você obtém 90 ° no sentido anti-horário)
- para acompanhar o progresso, adicione
echo "Rotating ${imgf#backup-} ... ";
depois das convert
chamadas (antes done
)
para uma forma mais compacta (por exemplo, um conjunto de arquivos numerados), usar alguma expansão de parâmetros como echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
em vez
(Você não pode remover o prefixo e o sufixo na mesma expansão do bash param, portanto, use cut
)
Depois da verificação, você não estragou tudo e exclua as fotos, movendo-as de volta para a original.
rename 's/^rotated-//;' rotated-*
rm backup-img-*