Uma boa solução é fazer um conjunto de backups (por exemplo, backup-
prefixado), girar os arquivos originais produzindo um conjunto de novos arquivos (com prefixo rotated-
), 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 tirá-los (ele usaria a expansão de parâmetros, ewww ...)
A ferramenta rename
permite usar a sintaxe de substituição s/before/after/
(da ferramenta sed
) para trocar esse prefixo de salvaguarda e sobrescrever os arquivos originais, para que todo o processo de um conjunto de imagens img-
< strong> {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
cp
em vez de mv
, mas depois há 2 cópias do original por aí (desvantagem é a concatenação de prefixos, " rotated-backup-
...")
- a rotação é no sentido horário (
-rotate 270
você fica 90 ° no sentido anti-horário)
- para acompanhar o progresso, adicione
echo "Rotating ${imgf#backup-} ... ";
após convert
chamadas (antes de done
)
-
para um formulário mais compacto (por exemplo, um conjunto de arquivos numerados), use alguma expansão de parâmetro como echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
(Você não pode remover o prefixo e o sufixo na mesma expansão do bash param, portanto use cut
)
Depois de verificar que você não estragou tudo, exclua as fotos, movendo-as de volta ao original
rename 's/^rotated-//;' rotated-*
rm backup-img-*