it-swarm-vi.tech

Tìm kiếm văn bản đệ quy với mẫu grep và tệp

Cho ví dụ cấu trúc thư mục này:

/folder1/file1.txt[.__.

Làm cách nào để thực hiện tìm kiếm văn bản đệ quy trên tất cả *.txt tệp có grep từ "/"?

("grep -r <pattern> *.txt" thất bại khi chạy từ "/", vì không có .txt tập tin trong thư mục đó.)

46
Anders Sandvig

Phiên bản GNU Grep của tôi có công tắc cho việc này:

grep -R --include='*.txt' $Pattern

Mô tả như sau:

--include=GLOB

Chỉ tìm kiếm các tệp có tên cơ sở khớp với GLOB (sử dụng khớp ký tự đại diện như được mô tả trong --exclude).

62
Kyle Brandt

Nếu bạn có số lượng tệp lớn, sẽ rất hữu ích khi kết hợp xargs vào lệnh để tránh lỗi list Danh sách đối số quá dài '.

find . -name '*.txt' -print | xargs grep <pattern>
20
Mark

bạn có thể sử dụng tùy chọn zsh của EXTENDED_GLOB ( docs )

grep <pattern> **/*.txt
2
santa

Bạn có thể muốn xem ack tại http://betterthangrep.com , nơi có các phương tiện để chọn tệp để tìm kiếm theo filetype.

1
Andy Lester
find . -name '*.txt' -type f -exec grep <pattern> {} \;
0
innaM

Câu trả lời của Manni sẽ tạo ra một quy trình grep mới cho mỗi tệp văn bản. Nếu bạn có lot trong số các tệp văn bản ở đó, bạn có thể xem xét việc sắp xếp mọi tệp trước và chọn tệp .txt khi hoàn thành:

grep -r <pattern> * | grep \.txt:

Đó là nhiều đĩa hơn, nhưng dù sao có thể nhanh hơn.

0
Commander Keen

Đó là năm 2019 và không có cách nào tôi vẫn sử dụng grep để tìm kiếm văn bản đệ quy.

Câu trả lời hôm nay của IMHO nên bao gồm ripgrep :

rg <pattern> -ttxt
0
santa