Bạn có thể sử dụng grepcông cụ để tìm kiếm đệ quy thư mục hiện tại với -rtham số, như:
grep -r "pattern" .
Lưu ý: -r- Tìm kiếm đệ quy các thư mục con.
Để tìm kiếm trong các tệp cụ thể, bạn có thể sử dụng cú pháp toàn cầu hóa như:
grep "class foo" **/*.c
Lưu ý: Bằng cách sử dụng tùy chọn globalbing ( **), nó sẽ quét tất cả các tệp theo cách đệ quy với phần mở rộng hoặc mẫu cụ thể. Để kích hoạt cú pháp này, hãy chạy : shopt -s globstar. Bạn cũng có thể sử dụng **/*.*cho tất cả các tệp (không bao gồm ẩn và không có phần mở rộng) hoặc bất kỳ mẫu nào khác.
Nếu bạn có lỗi rằng đối số của bạn quá dài, hãy xem xét thu hẹp tìm kiếm của bạn hoặc sử dụng findcú pháp thay vì:
find . -name "*.php" -execdir grep -nH --color=auto foo {} ';'
Hoặc sử dụng ripgrep.
Nếu bạn đang làm việc trên các dự án lớn hơn hoặc các tệp lớn, bạn nên sử dụng ripgrepthay thế, như:
rg "pattern" .
Kiểm tra tài liệu, các bước cài đặt hoặc mã nguồn trên trang dự án GitHub .
Đó là nhanh hơn nhiều so với bất kỳ công cụ khác như GNU / BSD grep , ucg, ag, sift, ack, pthoặc tương tự, kể từ khi nó được xây dựng trên đầu trang của engine regex Rust trong đó sử dụng automata hữu hạn, SIMD và tối ưu hóa đen tích cực để giúp tìm kiếm rất nhanh.
Nó hỗ trợ bỏ qua các mẫu được chỉ định trong .gitignorecác tệp, do đó, một đường dẫn tệp có thể được khớp với nhiều mẫu toàn cục cùng một lúc.
Bạn có thể sử dụng các tham số phổ biến như:
-i - Tìm kiếm không nhạy cảm.
-I - Bỏ qua các tệp nhị phân.
-w - Tìm kiếm toàn bộ từ (ngược lại với từ ghép một phần).
-n - Hiển thị dòng của trận đấu của bạn.
-C/ --context(vd -C5) - Tăng ngữ cảnh, vì vậy bạn thấy mã xung quanh.
--color=auto - Đánh dấu văn bản phù hợp.
-H - Hiển thị tên tệp nơi tìm thấy văn bản.
-c- Hiển thị số lượng các dòng phù hợp. Có thể kết hợp với -H.