Una buena solución es hacer un conjunto de copias de seguridad (por ejemplo, con prefijo backup-
), rotar los archivos originales produciendo un conjunto de archivos nuevos (con prefijo, por ejemplo rotated-
), dándole un conjunto de
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ...y así
El mv
/ cp
tools [bash globbing] solo puede agregar prefijos, es complicado quitarlos (usaría la expansión de parámetros, ewww ...)
La rename
herramienta le permite usar la s/before/after/
sintaxis de sustitución (de la sed
herramienta) para intercambiar ese prefijo de salvaguarda y sobrescribir los archivos originales, por lo que su proceso general para un conjunto determinado de imágenes img-
{1..n}.png
sería:
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:
- podría usar en
cp
lugar de mv
, pero luego hay 2 copias del original por ahí (lo malo es que obtiene la concatenación de prefijos, " rotated-backup-
...")
- la rotación es en el sentido de las agujas del reloj (
-rotate 270
te da 90 ° en sentido antihorario)
- para seguir el progreso, agregue
echo "Rotating ${imgf#backup-} ... ";
después de las convert
llamadas (antes done
)
para una forma más compacta (por ejemplo un conjunto de archivos numerados), utilizar un poco de expansión de parámetros como echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
en vez
(No puede eliminar el prefijo y el sufijo en la misma expansión de bash param, por lo tanto, use cut
)
Luego, después de la verificación, no ha estropeado, elimine las imágenes volviéndolas al original
rename 's/^rotated-//;' rotated-*
rm backup-img-*