Une bonne solution est de créer un ensemble de sauvegardes (par exemple préfixées backup-
), faire tourner les fichiers originaux pour en produire de nouveaux fichiers (préfixés par exemple rotated-
), vous donnant un ensemble de
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ...et ainsi de suite
Les outils mv
/cp
[bash globbing] ne peuvent ajouter que des préfixes, c'est compliqué de les enlever (ça utiliserait l'expansion de paramètres, beurk...)
L'outil rename
vous permet d'utiliser la syntaxe de substitution s/avant/après/
(de l'outil sed
) pour échanger ce préfixe de sauvegarde et écraser les fichiers originaux, donc votre processus global pour un ensemble donné de photos img-
{1..n}.png
serait :
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
Note :
- vous pourriez utiliser
cp
plutôt que mv
, mais alors il y a 2 copies de l'original qui traînent (l'inconvénient est que vous obtenez la concaténation des préfixes, "rotated-backup-
...")
- la rotation est dans le sens horaire (
-rotate 270
vous donne 90° dans le sens antihoraire)
- pour suivre le progrès, ajoutez
echo "Rotation de ${imgf#backup-} ... ";
après les appels convert
(avant done
)
-
pour une forme plus compacte (par exemple un ensemble de fichiers numérotés), utilisez une certaine expansion de paramètres comme echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
à la place
( Vous ne pouvez pas supprimer le préfixe et le suffixe dans la même expansion de paramètres bash donc utilisez cut
)
Ensuite, après avoir vérifié que vous n'avez pas fait d'erreur, supprimez les photos en les renvoyant à l'état original
rename 's/^rotated-//;' rotated-*
rm backup-img-*