Nếu tôi hiểu bạn chính xác thì đây là những gì bạn muốn làm:
find . -name '*.py' -print0 | xargs -0 grep 'something' > output.txt
Find
tất cả các tệp có phần mở rộng py
, grep
chỉ các hàng có chứa something
và lưu các hàng trong đó output.txt
. Nếu tập tin chứa bất cứ điều gì nó sẽ được thay thế.
Chỉnh sửa: Sử dụng -exec:
find . -name '*.py' -exec grep 'something' {} \; > output.txt
Tôi đang kết hợp bình luận của Chris Downs ở đây. Lệnh trên sẽ dẫn đến grep
việc được thực thi nhiều lần khi find
tìm thấy sự xuất hiện. Tuy nhiên, nếu bạn thay thế ;
bằng a +
, grep
được gọi bằng đầu ra từ find
nối (đến một giới hạn nhất định). Xem câu hỏi Sử dụng dấu chấm phẩy (;) so với dấu cộng (+) với exec trong find để tìm hiểu thêm về chủ đề.
+
thay vì\;
, nó sẽ cải thiện đáng kể thời gian thực hiện (vì nó sẽ chống lại các đối số trước khi thực hiện cho đến khiARG_MAX
).