จะดีกว่าและง่ายกว่าที่จะใช้ หา สั่งการ:
หา . -พิมพ์ f -name "*.mp4" ! -ชื่อ "*_notouch.mp4" -exec rm -v {} \;
คำสั่งนี้จะจับคู่กับชื่อไฟล์ที่ลงท้ายด้วย .mp4แต่ไม่ใช่กับ _notouch.mp4 และจะเรียกใช้คำสั่งที่ได้รับหลังจากนั้น -ผู้บริหาร.
ก่อนการดำเนินการทำลายล้างดังกล่าว ควรเสริมหรือแทนที่เสมอ rm สั่งการด้วย เสียงสะท้อน และตรวจสอบว่าคุณได้รับคำสั่งที่คุณคาดหวัง:
หา . -พิมพ์ f -name "*.mp4" ! -ชื่อ "*_notouch.mp4" -exec echo rm -v {} \;
[แก้ไข] ตามที่กล่าวไว้ในความคิดเห็น; ในกรณีของคุณ คุณสามารถใช้ พิมพ์ - ลบ แทนที่ -exec echo rm -v {} \; (ซึ่งจะมีประสิทธิภาพมากขึ้นหากคุณมีไฟล์หลายล้านไฟล์) และในการแสดงรายการไฟล์ที่จะได้รับผลกระทบ (ก่อนเรียกใช้คำสั่งทำลาย) คุณสามารถเรียกใช้:
หา . -พิมพ์ f -name "*.mp4" ! -ชื่อ "*_notouch.mp4" (-พิมพ์ เป็นทางเลือก)
นอกจากนี้หากคุณ อย่า ต้องการให้มีผลกับไดเร็กทอรีย่อย คุณสามารถใช้ -ความลึกสูงสุด 1 ตัวเลือกเช่นนี้:
หา . -maxความลึก 1 -ประเภท f -name "*.mp4" ! -ชื่อ "*_notouch.mp4".