ด้วยความช่วยเหลือของ GNU:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
ด้วย OSX sed:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
คำสั่งแรกfindค้นหาไฟล์มาตรฐานทั้งหมด (ไม่ใช่ไดเร็กทอรีหรือไพพ์หรืออื่น ๆ ) พิมพ์โดยคั่นด้วย\0(ดังนั้นชื่อไฟล์สามารถมีช่องว่างบรรทัดใหม่ ฯลฯ )
คำสั่งที่สองxargsอ่านเอาต์พุตของfind, คว้ารายการตามตัวคั่น ( \0เนื่องจาก-0), เรียกใช้sed -i [...]ด้วยพารามิเตอร์ที่เพิ่มจากรายการ ( sedจะถูกเรียกหลายครั้งถ้ามีไฟล์จำนวนมากเนื่องจากความยาวสูงสุดของพารามิเตอร์ถูก จำกัด แต่ละคำขอร้อง)
sedปรับเปลี่ยนคำสั่งในสถานที่ ( -i)
ในฐานะที่เป็นมันจะลบบรรทัดที่มีการแสดงออกปกติ/KeyWord/dKeyWord
คุณควรเรียนรู้ที่sedจะเข้าใจไวยากรณ์ (เรียบง่าย แต่ผิดปกติ) และอ้างอิงไปยัง manpages ที่เหมาะสมสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเครื่องมือที่เกี่ยวข้องที่นี่
และในขณะที่ฉันต้องการส่งเสริมzshวิธีการแก้ปัญหาด้วย globs ขยายของมัน:
sed -i /KeyWord/d **/*(.)