Bạn có thể sử dụng grep
công cụ để tìm kiếm đệ quy thư mục hiện tại với -r
tham 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 find
cú 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 ripgrep
thay 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
, pt
hoặ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 .gitignore
cá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
.