Приємним рішенням є створення набору резервних копій (наприклад, префіксованих backup-
), обертання оригінальних файлів, що створюють набір нових файлів (префіксованих напр. rotated-
), Надаючи набір
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ...і так далі
Інструменти mv
/ cp
tools [bash globbing] можуть додавати лише префікси, їх забирати безладно (це використовує розширення параметрів, ewww ...)
rename
Інструмент дозволяє використовувати s/before/after/
замісний синтаксис (від sed
інструменту) для обміну префікса защитительного і перезаписати вихідні файли, так що ваш загальний процес для даного набору картинок img-
{1..n}.png
буде:
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
Примітка:
- ви могли б скористатись,
cp
а не mv
, але тоді є дві копії оригіналу, що лежить навколо (недоліком є отримання конкатенації префіксів, " rotated-backup-
...")
- обертання за годинниковою стрілкою (
-rotate 270
отримує 90 ° проти годинникової стрілки)
- для відстеження прогресу, додавання
echo "Rotating ${imgf#backup-} ... ";
після convert
дзвінків (раніше done
)
для більш компактної форми (наприклад, набору пронумерованих файлів), використовуйте echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";
замість цього деяке розширення параметрів
(Ви не можете видалити префікс і суфікс у тому ж розширенні bash param, звідси використовувати cut
)
Потім після перевірки ви не заблукали, видаліть фотографії, перемістивши їх до оригіналу
rename 's/^rotated-//;' rotated-*
rm backup-img-*