ฉันมีหลายไฟล์ที่มีชื่อไฟล์ฐานเดียวกัน ฉันต้องการลบทั้งหมดยกเว้นหนึ่งรายการ
foo.org #keep
foo.tex #delete
foo.fls #delete
foo.bib #delete
etc
หากฉันไม่ต้องการเก็บไว้ฉันรู้ว่าฉันสามารถrm foo.*ใช้ได้
TLDPสาธิต^การคัดค้านการแข่งขัน จากการทดลองและข้อผิดพลาดฉันสามารถค้นพบสิ่งนั้นได้
rm foo.*[^org]
ทำในสิ่งที่ฉันต้องการ แต่ฉันไม่เข้าใจไวยากรณ์
นอกจากนี้ในขณะที่ไม่ได้เป็นข้อ จำกัด ในกรณีที่ใช้งานของฉันฉันคิดว่ารูปแบบนี้ยังไม่สนใจและfoo.o foo.orรูปแบบนี้ทำงานอย่างไรและรูปทรงแบบใดที่ละเว้นเพียง foo.orgดูเหมือน
Regular Expressionคุณกำลังใช้ คุณควรระวังตัวละครจัดกลุ่มของคุณ โดยใช้วงเล็บคุณได้ระบุความหมายชั้นเรียนตัวอักษรที่คุณจะลบไฟล์ใด ๆ ที่มีส่วนขยายด้วยตัวอักษรo, rหรือgในลำดับใด ใช้วงเล็บเพื่อสร้างกลุ่มและรักษาลำดับของอักขระ
foo.*[^org]จะตรงกับชื่อไฟล์ใด ๆ ที่ขึ้นต้นด้วยfoo.อักขระหนึ่งตัวขึ้นไปหลังจากจุดที่อักขระสุดท้ายไม่ใช่ o, r หรือ g ดังนั้นจึงจะตรงfoo.orbแต่ไม่foo.orgหรือหรือfoo.or foo.oคำตอบของ GlennJackman แสดงวิธีเปิดใช้งานคุณสมบัติการจับคู่รูปแบบเพิ่มเติมเพื่อคัดค้านการจับคู่
rm foo.*[^org]ลบไฟล์ทั้งหมดที่ผ่านมาของตัวละครจะไม่o,rหรือgดังนั้นfoo.fooจะไม่ตรงกับอย่างใดอย่างหนึ่ง