มีคำสั่ง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 - มันจะไม่เพิ่มคำนำหน้าอีกครั้งเมื่อคุณเรียกมันหลายครั้ง
มันทำงานโดยการแทนที่ (ความยาวเป็นศูนย์) เริ่มต้นของสตริง ( ^
) หรือเริ่มต้นตามด้วยตัวเลือกสตริงกับprefix
prefix
ฉันจะออกจากแค็ปซูลนี้ในทั้งเชลล์สคริปต์หรือฟังก์ชั่นเชลล์เป็นแบบฝึกหัดสำหรับคุณ :)
Postfix นั้นค่อนข้างยากกว่าเพราะคุณต้องเข้าใจว่าส่วนใดของชื่อไฟล์ที่ถือว่าเป็นส่วนขยาย ...