ใช่rm *.xvgจะลบไฟล์ที่ลงท้ายด้วย.xvgในไดเรกทอรีปัจจุบันของคุณเท่านั้น นี่คือเหตุผล
เมื่อคุณพิมพ์คำสั่งเช่นนี้งานจะถูกแบ่งระหว่างเชลล์ที่คุณใช้ (สมมติว่าใช้ bash) และไบนารีคำสั่ง
which rmคุณสามารถค้นหาไบนารีโดยการพิมพ์ โปรแกรมเล็ก ๆ นี้ดูแลการยกเลิกการเชื่อมโยงไฟล์ โปรแกรมเช่นนี้สามารถเริ่มต้นได้จากบรรทัดคำสั่งและสามารถอ่านรายการอาร์กิวเมนต์prog arg1 arg2 arg3เมื่อเริ่มต้น ในกรณีของไฟล์rmเหล่านั้นจะถูกตีความเป็นรายการชื่อไฟล์ที่ผ่านการรับรองโดยสมบูรณ์เพื่อลบ ดังนั้นถ้าคุณอยู่ในไดเรกทอรีที่มีไฟล์foo.barพิมพ์จะส่งผลให้delete 'foo.*' rm: foo.*: No such file or directoryสังเกตเครื่องหมายคำพูดเดี่ยวรอบ ๆ รูปแบบไฟล์โดยบอกให้เชลล์ส่งอาร์กิวเมนต์ไปยังเชลล์ตามที่เป็นอยู่
อย่างไรก็ตามหากคุณพิมพ์rm *.barในไดเรกทอรีเดียวกันมันจะลบไฟล์ สิ่งที่เกิดขึ้นที่นี่คือเชลล์ของคุณซึ่งเป็นโปรแกรมที่คุณใช้พิมพ์คำสั่งทำการแปลงบางอย่างก่อนส่งอาร์กิวเมนต์ไปยังคำสั่ง หนึ่งในนั้นเรียกว่า 'การขยายชื่อไฟล์' มิฉะนั้นจะรู้ว่าเป็น 'การวนซ้ำ' คุณสามารถดูรายการของไฟล์ทุบตีขยายชื่อที่นี่ หนึ่งในการขยายที่พบมากที่สุดคือ*ซึ่งขยายไปยังชื่อไฟล์ในไดเรกทอรีปัจจุบัน
วิธีง่ายๆในการดู globs ในที่ทำงานคือการใช้echoซึ่งจะพิมพ์กลับอาร์กิวเมนต์ทั้งหมดที่ส่งไปยังมันผ่านเปลือก ดังนั้นการพิมพ์ในออกจะไดเรกทอรีเดียวกันecho * foo.barดังนั้นเมื่อคุณพิมพ์rm *.barสิ่งที่เกิดขึ้นจริงคือเชลล์ขยายรายการอาร์กิวเมนต์ไปที่foo.barจากนั้นส่งผ่านไปยังrmคำสั่ง
มีวิธีการบางอย่างในการควบคุมกลม ในเวอร์ชันล่าสุดของ bash เช่นคุณสามารถเปิดตัวเลือกที่เรียกว่า globstar ซึ่งจะทำการขยายซ้ำ การพิมพ์echo **/*.barจะแสดงรายการไฟล์ทั้งหมดที่ลงท้ายด้วย.barโฟลเดอร์ย่อยทั้งหมด ดังนั้นการพิมพ์rm **/*.barใน bash ที่เปิดใช้งาน globstar จะเป็นการลบไฟล์ที่ตรงกันทั้งหมดซ้ำในโฟลเดอร์ย่อย
rm -f {*.xvg,.*.xvg}เพื่อลบไฟล์ที่ซ่อนอยู่ และrm -R -f {*.xvg,.*.xvg}เพื่อลบไดเรกทอรีด้วย