Solusi yang bagus adalah membuat satu set cadangan (mis. Diawali backup-), memutar file asli menghasilkan satu set file baru (misalnya awalan rotated-), memberi Anda satu set
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ...dan seterusnya
Itu mv / cptools [bash globbing] hanya dapat menambahkan awalan, itu berantakan untuk mengambilnya (itu akan menggunakan ekspansi parameter, ewww ...)
The renamealat memungkinkan Anda untuk menggunakan s/before/after/sintaks substitusi (dari sedalat) untuk swap awalan safeguard dan menimpa file asli, sehingga proses Anda secara keseluruhan untuk satu set gambar img-{1..n}.png akan menjadi:
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
catatan:
- Anda bisa menggunakannya
cp daripada mv, tetapi kemudian ada 2 salinan asli yang tergeletak di sekitar (sisi negatifnya adalah Anda mendapatkan gabungan awalan, " rotated-backup-...")
- rotasi searah jarum jam (
-rotate 270 membuat Anda 90 ° berlawanan arah jarum jam)
- untuk melacak kemajuan, tambahkan
echo "Rotating ${imgf#backup-} ... ";setelahconvert panggilan (sebelum done)
untuk bentuk yang lebih ringkas (mis. satu set file bernomor), gunakan beberapa ekspansi parameter seperti echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)..."; sebagai gantinya
(Anda tidak dapat menghapus awalan dan sufiks dalam ekspansi bash param yang sama maka gunakan cut)
Kemudian setelah verifikasi Anda tidak mengacaukan, hapus gambar dengan memindahkannya kembali ke aslinya
rename 's/^rotated-//;' rotated-*
rm backup-img-*