ฉันใช้rename
ตลอดเวลา มันค่อนข้างง่าย แต่หวังว่าคุณจะรู้พื้นฐานของ regex:
rename "s/SEARCH/REPLACE/g" *
สิ่งนี้จะแทนที่สตริงSEARCH
ด้วยREPLACE
ในทุกไฟล์ (นั่นคือ*
) /g
หมายถึงทั่วโลกดังนั้นหากคุณมีก็จะถูกเปลี่ยนชื่อเป็นSEARCH_SEARCH.jpg
REPLACE_REPLACE.jpg
หากคุณไม่ได้มีก็จะได้ทำเฉพาะเปลี่ยนตัวครั้งและทำให้ตอนนี้ชื่อ/g
REPLACE_SEARCH.jpg
หากคุณต้องการตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ให้เพิ่ม/i
(นั่นคือ/gi
หรือ/ig
ในตอนท้าย)
ด้วยการแสดงออกปกติคุณสามารถทำอะไรได้อีกมากมาย
โปรดทราบว่านี่rename
คือคำสั่งprename
(aka Perl rename
) ซึ่งรองรับนิพจน์ปกติของ Perl ที่สมบูรณ์ มีอีกอย่างหนึ่งrename
ที่ใช้รูปแบบและไม่มีประสิทธิภาพ prename
เคยติดตั้งโดยค่าเริ่มต้นบน Ubuntu (พร้อมด้วย Perl) แต่ตอนนี้คุณอาจต้องทำ:
sudo apt install rename
นี่คือตัวอย่างบางส่วน:
อุปสรรค
เพิ่ม :
rename 's/^/MyPrefix_/' *
document.pdf
เปลี่ยนชื่อเป็น MyPrefix_document.pdf
ลบ :
นอกจากนี้คุณสามารถลบสตริงที่ไม่พึงประสงค์ สมมติว่าคุณมีไฟล์ MP3 20 ไฟล์ชื่อที่ต้องการCD RIP 01 Song.mp3
และคุณต้องการที่จะลบส่วน "CD RIP" และคุณต้องการที่จะลบมันออกจากไฟล์ทั้งหมดด้วยคำสั่งเดียว
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
ไปยัง 01 Song.mp3
สังเกตุช่องว่างเพิ่มเติม'^CD RIP '
โดยไม่ต้องเว้นวรรคไฟล์ทั้งหมดจะมีช่องว่างเป็นอักขระตัวแรกของไฟล์ นอกจากนี้โปรดทราบว่าวิธีนี้จะทำงานได้โดยไม่มี^
อักขระ แต่จะจับคู่กับCD RIP
ส่วนใด ๆ ของชื่อไฟล์ การ^
รับประกันจะลบเฉพาะอักขระหากเป็นจุดเริ่มต้นของไฟล์
การจำแนก
เพิ่ม :
rename 's/$/_MySuffix/' *
document.pdf
เปลี่ยนชื่อเป็น document.pdf_MySuffix
เปลี่ยน :
rename 's/\.pdf$/.doc/' *
จะเปลี่ยนเข้าสู่Something.pdf
Something.doc
(เหตุผลสำหรับแบ็กสแลชคือ.
คืออักขระ wildcard ใน regexp ดังนั้น.pdf
จับคู่qPDF
ในขณะที่\.pdf
ตรงกับสตริงที่แน่นอน.pdf
เท่านั้นนอกจากนี้สิ่งสำคัญที่ควรทราบถ้าคุณไม่คุ้นเคยกับ BASH คุณต้องใส่แบ็กสแลชในเครื่องหมายอัญประกาศเดี่ยว! หรือใช้อัญประกาศคู่หรือทุบตีจะพยายามแปลพวกเขาเพื่อทุบตี\.
และ "\."
เท่ากับ.
(แต่ใช้เครื่องหมายอัญประกาศคู่และแบ็กสแลชตัวอย่างเช่น "\ n" สำหรับการขึ้นบรรทัดใหม่ แต่เนื่องจาก"\."
ลำดับการหลบหนีกลับไม่ถูกต้อง แปลเป็น.
)
ที่จริงแล้วคุณยังสามารถแนบชิ้นส่วนของสตริงในเครื่องหมายคำพูดแทนของทั้งนี้'s/Search/Replace/g'
เป็นเช่นเดียวกับs/'Search'/'Replace'/g
และs/Search/Replace/g
การทุบตี คุณเพียงแค่ต้องระมัดระวังเกี่ยวกับอักขระพิเศษ (และช่องว่าง)
ฉันขอแนะนำให้ใช้-n
ตัวเลือกเมื่อคุณไม่แน่ใจคุณมีการแสดงออกปกติที่ถูกต้อง มันแสดงให้เห็นถึงสิ่งที่จะถูกเปลี่ยนชื่อจากนั้นออกโดยไม่ทำมัน ตัวอย่างเช่น:
rename -n s/'One'/'Two'/g *
นี่จะแสดงรายการการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นหากคุณไม่ได้ตั้ง-n
ค่าสถานะไว้ที่นี่ หากดูดีให้กดUpเพื่อย้อนกลับจากนั้นลบ-n
และกดEnter(หรือแทนที่ด้วย-v
เพื่อส่งออกการเปลี่ยนแปลงทั้งหมดที่ทำ)
หมายเหตุ : อูบุนตูเวอร์ชันด้านบน 17.04 ไม่ได้จัดส่งrename
ตามค่าเริ่มต้นอย่างไรก็ตามยังมีให้บริการในที่เก็บข้อมูล ใช้sudo apt install rename
สำหรับติดตั้ง