มีคำสั่งPerlrenameที่ควรทำเคล็ดลับ แต่ระวัง: มีคำสั่งที่แตกต่างกันหลายชื่อrenameดังนั้นให้แน่ใจว่าคุณมีสคริปต์ Perl ที่คาดว่าจะperlexprเป็นอาร์กิวเมนต์ นี่คือrenameคำสั่งให้โดยperlแพคเกจใน Debian และสัญญาซื้อขายล่วงหน้า (อูบุนตู, มิ้นท์, ... ) แต่ไม่ได้อยู่ในการแจกแจงอื่น ๆ renameที่อาจมียูทิลิตี้ที่แตกต่างกันเรียกว่า
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
อย่างที่คุณเห็นมันคือidempotent - มันจะไม่เพิ่มคำนำหน้าอีกครั้งเมื่อคุณเรียกมันหลายครั้ง
มันทำงานโดยการแทนที่ (ความยาวเป็นศูนย์) เริ่มต้นของสตริง ( ^) หรือเริ่มต้นตามด้วยตัวเลือกสตริงกับprefixprefix
ฉันจะออกจากแค็ปซูลนี้ในทั้งเชลล์สคริปต์หรือฟังก์ชั่นเชลล์เป็นแบบฝึกหัดสำหรับคุณ :)
Postfix นั้นค่อนข้างยากกว่าเพราะคุณต้องเข้าใจว่าส่วนใดของชื่อไฟล์ที่ถือว่าเป็นส่วนขยาย ...