ทางออกที่ดีคือสร้างชุดการสำรองข้อมูล (เช่นนำหน้าbackup-
) หมุนไฟล์ต้นฉบับที่สร้างชุดไฟล์ใหม่ (นำหน้าเช่นrotated-
) เพื่อให้ชุด
img-1.png
backup-img-1.png
rotated-img-1.png
img-2.png
- ... และต่อไป
mv
/ cp
เครื่องมือ [ทุบตี 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
แต่จากนั้นมีสำเนาต้นฉบับ 2 ชุดวางอยู่รอบ ๆ (ข้อเสียคือคุณจะต่อท้ายคำนำหน้า " 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-*