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
/ cp
tools [bash globbing] hanya dapat menambahkan awalan, itu berantakan untuk mengambilnya (itu akan menggunakan ekspansi parameter, ewww ...)
The rename
alat memungkinkan Anda untuk menggunakan s/before/after/
sintaks substitusi (dari sed
alat) 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-*