เปลี่ยนชื่อ -“ s //” กับ“ y //” หมายถึงอะไร


9

หน้าคนให้สองตัวอย่าง:

rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *

มันก็คือ s หรือ y แล้วก็ /replaceThis/withThis

ผู้นำและ y หมายถึงอะไร? มีตัวเลือกอื่น ๆ อีกไหม?

คำตอบ:


12

ในกรณีแรก:

rename 's/\.bak$//' *.bak

คุณกำลังเรียกใช้นิพจน์ปกติกับชื่อไฟล์และแทนที่ส่วนที่ตรงกันของนิพจน์ (.bak ท้ายชื่อไฟล์) ด้วยนิพจน์ที่สอง (ซึ่งว่างเปล่า)

ในกรณีที่สอง:

rename 'y/A-Z/a-z/' *

คุณกำลังจับคู่กับพื้นที่รูปแบบการแสดงออกปกติและทับศัพท์ไปยังเป้าหมาย กล่าวอีกนัยหนึ่งช่วง AZ จะเปลี่ยนเป็นช่วง az ทำให้ชื่อไฟล์เป็นตัวพิมพ์เล็ก

ผมขอแนะนำให้คุณดูหน้าคนสำหรับsedสำหรับคำสั่งเพิ่มเติมและรายละเอียดเพิ่มเติม ฉันเชื่อว่าคำสั่ง 'ใช้บ่อยที่สุด นอกจากนี้regex (ส่วนที่ 7)และเอกสาร Perl อาจช่วยได้เช่นกัน โดยเฉพาะอย่างยิ่งต่อไปนี้เป็นบทแนะนำเกี่ยวกับ Perl และนิพจน์ทั่วไป


จากman sed:

S / regexp / ทดแทน /    
       พยายามจับคู่ regexp กับพื้นที่รูปแบบ หากสำเร็จ ‐
       เต็มแทนที่ส่วนที่ตรงกับการเปลี่ยน 
       การแทนที่อาจมีอักขระพิเศษ & เพื่ออ้างถึง
       ส่วนของพื้นที่รูปแบบที่จับคู่และพิเศษ
       หนี \ 1 ถึง \ 9 เพื่ออ้างถึงการจับคู่ที่ตรงกัน
       นิพจน์ย่อยใน regexp

Y / แหล่งที่มา / / ปลายทาง  
       แปลอักขระในพื้นที่รูปแบบที่ปรากฏ
       ในแหล่งที่มาของตัวละครที่สอดคล้องกันในปลายทาง

ขอบคุณมาก - ฉันแค่ไม่แน่ใจว่าคนที่ชี้ไปที่ 'sed' เป็นความคิดที่ดีที่สุดเนื่องจากมีการใช้งานที่หลากหลายโดยเฉพาะอย่างยิ่งระหว่าง linux distro และ OSX ที่กำหนด
aaaaaa

@aaaaaa เว็บไซต์นี้มีเฉพาะเกี่ยวกับ Ubuntu
wjandrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.