Với một sed GNU:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Với một chiếc OSX sed:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
Lệnh đầu tiên find
tìm thấy tất cả các tệp tiêu chuẩn (không phải thư mục hoặc đường ống, v.v.), in chúng cách nhau bởi \0
(vì vậy tên tệp có thể chứa dấu cách, dòng mới, v.v.).
Lệnh thứ hai xargs
đọc đầu ra của find
, lấy một danh sách dựa trên dấu phân cách ( \0
vì -0
), gọi sed -i [...]
các tham số được thêm vào từ danh sách ( sed
sẽ được gọi nhiều lần nếu có nhiều tệp, vì độ dài tối đa của các tham số bị giới hạn trong từng lời cầu khẩn).
Các sed
Sửa lệnh tại chỗ ( -i
).
Theo /KeyWord/d
đó, nó sẽ xóa các dòng chứa biểu thức chính quy KeyWord
.
Bạn nên học sed
cách hiểu đúng cú pháp (đơn giản nhưng khác thường) và tham khảo các trang hướng dẫn phù hợp để biết thêm thông tin về các công cụ liên quan ở đây.
Và như tôi muốn quảng bá zsh
, giải pháp với những khoảng trống mở rộng của nó:
sed -i /KeyWord/d **/*(.)