ฉันใช้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สำหรับติดตั้ง