ลบไฟล์ที่ตรงกันในไดเรกทอรีย่อยทั้งหมด


76

ฉันจะลบไฟล์. swp ทั้งหมดในไดเรกทอรีย่อยทั้งหมดภายใต้ Linux ได้อย่างไร


3
อย่าลืมดูโปรแกรมอย่างถังขยะเพื่อให้คุณสามารถยกเลิกการลบได้แทนที่จะใช้ rm code.google.com/p/trash-cli (คุณต้องการเพียงแค่แทนที่ 'RM' กับ 'ถังขยะ' ในทุกคำตอบด้านล่าง.)

คำตอบ:


136

ลบไฟล์ * .swp ทั้งหมดภายใต้ไดเรกทอรีปัจจุบันใช้findคำสั่งในรูปแบบใดรูปแบบหนึ่งต่อไปนี้:

  • find . -name \*.swp -type f -delete

    -deleteตัวเลือกหมายความว่าหาโดยตรงจะลบไฟล์ที่ตรงกัน นี่คือการจับคู่ที่ดีที่สุดสำหรับคำถามที่แท้จริงของ OP

    การใช้การ-type fค้นหาหมายความว่าจะประมวลผลไฟล์เท่านั้น

  • find . -name \*.swp -type f -exec rm -f {} \;
    find . -name \*.swp -type f -exec rm -f {} +

    ตัวเลือก-execช่วยให้ค้นหาเพื่อรันคำสั่งโดยพลการต่อไฟล์ ตัวแปรแรกจะรันคำสั่งหนึ่งครั้งต่อไฟล์และไฟล์ที่สองจะรันคำสั่งน้อยที่สุดเท่าที่จะเป็นไปได้โดยแทนที่{}ด้วยพารามิเตอร์ให้มากที่สุด

  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

    ท่อส่งออกไปยังรูปแบบจะใช้คำสั่งต่อไฟล์ที่ซับซ้อนมากขึ้นกว่าที่เป็นไปได้ด้วยxargs -execตัวเลือก-print0บอกfindให้แยกการจับคู่กับ ASCII NULL แทนที่จะขึ้นบรรทัดใหม่และ-0บอกxargsให้คาดว่าอินพุตที่คั่นด้วย NULL สิ่งนี้ทำให้การสร้างท่อปลอดภัยสำหรับชื่อไฟล์ที่มีช่องว่าง

ดูman findรายละเอียดและตัวอย่างเพิ่มเติม


16

find . -name '*.swp' -delete

เมื่อทำการค้นหาเสร็จแล้วลบตัวเองเพื่อลบความเสี่ยงสำหรับพื้นที่ที่ฝังอยู่ในชื่อไฟล์ ... เพื่อความปลอดภัยเพิ่มเติมให้พิจารณาเพิ่ม-type fเฉพาะไฟล์เท่านั้น



2

สำหรับการค้นหาภายใต้ไดเรกทอรีบ้านของฉัน (และใช้ GNU 'find' และ 'xargs') ฉันจะใช้:

find $HOME -name '*.swp' -print0 | xargs -0 rm -f

การใช้ ' -print0' และ ' -0' หมายความว่าชื่อจะถูกคั่นด้วยอักขระ ASCII NUL '\ 0' และสิ่งนี้จะจัดการกับเส้นทางของไฟล์ด้วยช่องว่าง ฯลฯ ในชื่อ หากคุณคิดว่าคุณอาจมีไดเรกทอรี (หรือไฟล์อุปกรณ์หรือ FIFO หรือไม่ใช่ไฟล์อื่น ๆ ) ภายใต้ไดเรกทอรีของคุณที่ลงท้ายด้วย '.swp' คุณสามารถเพิ่ม-type fตัวเลือก '' เพื่อ 'ค้นหา' หากคุณมีเฉพาะไดเรกทอรีคำสั่งด้านบนจะล้มเหลวในการลบออกอย่างดัง

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