2014-09-05 15 views
18

Tôi biết cách tìm kiếm một chuỗi đơn trong một số tệp cùng lúc với Sublime 3 (được giải thích here).Tìm kiếm nhiều chuỗi trong nhiều tệp với Sublime 3

Điều tôi cần làm là tìm kiếm nhiều chuỗi trong một số tệp. Tôi đã thử đi Find in files và thiết lập:

Field: string1 \& string2 
Where: /path_to_folder_containing_the_files_I_want_to_ search/ 

(nơi string1string2 là những chuỗi Tôi muốn tìm kiếm) nhưng điều đó dường như không làm việc.

Điều này có thể được thực hiện không?

+0

Gabriel, tôi nghĩ câu hỏi của bạn sẽ tốt hơn trên http://superuser.com – samy

+0

@samy tại sao? Có hàng ngàn câu hỏi liên quan đến 'Sublime' ở đây, chỉ cần nhấp vào các thẻ để xem. – Gabriel

+2

Vâng tôi đồng ý; điều này trông giống như một câu hỏi về phần mềm tính toán chung đối với tôi, không phải lập trình - vì vậy tôi đã nghĩ rằng thẻ tuyệt vời trên siêu người dùng là hợp lý nhất: http: // superuser.com/questions/tagged/sublime-text-3 – samy

Trả lời

25

Chỉ cần đi qua câu hỏi cũ này và nghĩ rằng tôi muốn thêm giải pháp của tôi, có thể hữu ích cho ai đó trong tương lai.

Hỗ trợ tuyệt vời tìm kiếm trong tất cả các thư mục đang mở và có thể sử dụng regex. Vì vậy, sử dụng cả hai, bạn có thể mở hoặc thêm tất cả các thư mục bạn muốn tìm kiếm vào dự án và sử dụng regex để tìm kiếm nhiều từ khóa. Trong trường hợp của bạn nó sẽ là như sau (hãy chắc chắn để kiểm tra các regex hộp .* biểu tượng):

Find: (string1|string2) 
Where: <open folders> 
+0

Khi sử dụng regex thay cho 'string1', 'string2' trên 4 chuỗi trở lên, regex gặp lỗi: "Độ phức tạp của việc khớp biểu thức chính quy vượt quá giới hạn được xác định trước. Hãy thử tái cấu trúc biểu thức chính quy để thực hiện từng lựa chọn bởi máy nhà nước rõ ràng. " Điều này có liên quan đến loại tìm kiếm này không? – john

+1

@john: bạn có thể đăng regex mẫu của mình không? Chỉ cần thử với 4 tùy chọn đơn giản, và nó hoạt động tốt trên tôi. – Sherzod

+0

dường như tôi đã hối hận từng chuỗi riêng lẻ, thay vì đóng gói toàn bộ tập hợp, và điều đó gây ra sự cố. Ví dụ. Tôi muốn điều này: '^. * (?: string1 | string2 | string3). * $' – john

0

Không, bạn chỉ có thể tìm kiếm một thứ tại một thời điểm trong tuyệt vời, giống như hầu hết các trình chỉnh sửa khác mà tôi biết. Cách duy nhất có thể xung quanh việc này là sử dụng tìm kiếm regex (nhấp vào nút ở phía xa bên trái của trường khi nhập cụm từ tìm kiếm của bạn) và tìm ra một regex tốt phù hợp với tất cả những thứ bạn đang tìm kiếm. Hoặc, bạn chỉ có thể tìm kiếm từng đối sánh tại một thời điểm.

Là một thay thế, hãy xem xét đánh răng lên trên tiện ích xử lý văn bản dòng lệnh chuẩn như grep, sed, awk vv Kết hợp sức mạnh của họ với khả năng lệnh đường ống của vỏ cho phép bạn chạy các lệnh như:

grep -e "foo" *.txt | grep -e "bar" 

sẽ tìm kiếm trong tất cả các tệp .txt trong thư mục hiện tại cho mẫu foo, sau đó tất cả các dòng kết quả sẽ được tìm kiếm lại cho mẫu bar, sao cho kết quả cuối cùng sẽ có cả foobar trong chúng.

+0

Tôi cần phải tìm kiếm sự xuất hiện của cả hai chuỗi _at cùng một time_ trong một tệp để tìm kiếm chúng cùng một lúc sẽ không hoạt động nếu không có thêm một chút công việc trên phần. Cảm ơn bạn đã làm rõ điều này là không thể, tôi sẽ cố gắng để đưa ra một số regex. – Gabriel

+1

@Gabriel có một tùy chọn khác mà tôi vừa nghĩ đến trên đường về nhà - bạn có thể sử dụng các công cụ dòng lệnh chuẩn như 'grep',' awk', 'sed', v.v. để tìm kiếm hai thứ cùng một lúc. Như một ví dụ đơn giản, 'grep file.txt -e" foo "| grep "bar" '. Điều này sẽ tìm kiếm 'foo' và' bar' trên cùng một dòng, theo thứ tự bất kỳ. Điều này là khá khó khăn hơn để làm với một regex duy nhất. – MattDMo

+0

Nếu bạn có thể mở rộng mục này để sử dụng trên nhiều tệp cùng lúc, bạn có thể thêm nó vào câu trả lời của mình dưới dạng tùy chọn khả thi. – Gabriel

1

Tôi cố gắng này trên Sublime Text2, vì vậy nên làm việc trên Sublime Text3 là tốt.

Dòng: string1 string2 Chuỗi3 Chuỗi4 đâu:/path_to_folder_containing_the_files_I_want_to_ tìm kiếm/

Lưu ý: bỏ chọn điều này có nghĩa Regular Expression và kiểm tra "" có nghĩa là tìm kiếm toàn bộ từ '*.'.

Điều này sẽ tìm kiếm mẫu "string1 string2 string3 string4" trong tất cả các tệp trong thư mục được đề cập.

Các vấn đề liên quan