ในกรณีเฉพาะของคุณคุณสามารถใช้bash
คำสั่งต่อไปนี้( bash
คือเชลล์เริ่มต้นบน macOS):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
หมายเหตุ: หากมีโอกาสที่ชื่อไฟล์ของคุณจะขึ้นต้นด้วย-
ให้วางไว้ข้าง--
หน้า [1]:
mv -- "$f" "${f/_*_/_}"
หมายเหตุ: echo
อยู่ข้างหน้าmv
เพื่อดำเนินการแบบแห้ง ลบออกเพื่อทำการเปลี่ยนชื่อจริง
คุณสามารถเรียกใช้จากบรรทัดคำสั่งหรือใช้ในสคริปต์
"${f/_*_/_}"
เป็นแอปพลิเคชันของbash
การขยายพารามิเตอร์ : รูปแบบการจับคู่สตริงย่อย (แรก) _*_
ถูกแทนที่ด้วยลิเทอรั_
ลตัดโทเค็นกลางออกจากชื่อได้อย่างมีประสิทธิภาพ
- โปรดสังเกตว่า
_*_
เป็นรูปแบบ (นิพจน์ตัวแทนเช่นเดียวกับที่ใช้สำหรับ globbing) ไม่ใช่นิพจน์ทั่วไป (เพื่อเรียนรู้เกี่ยวกับรูปแบบเรียกใช้man bash
และค้นหาPattern Matching
)
หากคุณพบว่าตัวเองไฟล์ชุดเปลี่ยนชื่อบ่อยพิจารณาติดตั้งเครื่องมือพิเศษเช่น Perl-basedrename
ยูทิลิตี้ บน macOS คุณสามารถติดตั้งได้โดยใช้Homebrewตัวจัดการแพ็คเกจยอดนิยมดังต่อไปนี้:
brew install rename
นี่คือคำสั่งที่เทียบเท่ากับด้านบนโดยใช้rename
:
rename -n -e 's/_.*_/_/' *.png
อีกครั้งคำสั่งนี้ดำเนินการแบบแห้ง ลบ-n
เพื่อทำการเปลี่ยนชื่อจริง
- คล้ายกับ
bash
วิธีการแก้ปัญหาs/.../.../
เปลี่ยนตัวข้อความดำเนินการ แต่ - แตกต่างจากในbash
- จริงการแสดงออกปกติจะใช้
[1] วัตถุประสงค์ของการโต้แย้งพิเศษ--
ซึ่งได้รับการสนับสนุนโดยสาธารณูปโภคมากที่สุดคือการส่งสัญญาณว่าข้อโต้แย้งที่ตามมาควรจะถือว่าเป็นตัวถูกดำเนินการ (ค่า) ถึงแม้ว่าพวกเขามีลักษณะเหมือนตัวเลือกเนื่องจากการเริ่มต้นด้วยการ-
เป็นจาค็อบซีบันทึก