จะดีกว่าและง่ายกว่าที่จะใช้ หา
สั่งการ:
หา . -พิมพ์ 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"
.