Như tiêu đề cho thấy, cách nhanh nhất (chính xác) để tìm dòng nào của tệp nào khớp với một chuỗi cụ thể.
Cụ thể, tôi đang tìm kiếm .cpp
và .h
tập tin.
Như tiêu đề cho thấy, cách nhanh nhất (chính xác) để tìm dòng nào của tệp nào khớp với một chuỗi cụ thể.
Cụ thể, tôi đang tìm kiếm .cpp
và .h
tập tin.
Câu trả lời:
Notepad ++ có tùy chọn 'find in files', nằm trong menu 'Search' .. Điều này sẽ cho phép bạn tìm kiếm nhiều tệp trong một thư mục (bạn có thể chỉ định thư mục) và cũng sẽ hiển thị cho bạn số dòng của mỗi tệp. . Bạn có thể chuyển đổi xem các thư mục con và thư mục ẩn có được bao gồm trong tìm kiếm hay không và nó cũng sẽ cho phép bạn tìm kiếm với \ t \ n, v.v. và tìm kiếm với các biểu thức thông thường nếu bạn cần.
Notepad ++ là trình soạn thảo lập trình Windows (không phải IDE) và cũng là Nguồn mở.
(Tôi nhận ra rằng bạn rất có thể đã nghe nói về notepad ++, nhưng tôi chỉ đề cập đến nó ở đây như là một tùy chọn trong trường hợp bạn không biết về tính năng đặc biệt này và cho những người khác vấp phải chủ đề này sau này.
Chúc mừng :)
Đặc vụ Ransack hoạt động như một lá bùa. Tải về ở đây .
Trên các hệ thống Unix mọi người rất có thể sẽ sử dụng grep để làm điều này, vậy tại sao không sử dụng Windows Grep?
Đây là một giải pháp Powershell:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString
Phần -r
in gci
là để lặp lại, và tất nhiên là tùy chọn, cũng như hai bộ lọc mở rộng tệp. Một tham số hữu ích Select-String
là -list
sẽ chỉ báo cáo phiên bản đầu tiên của trận đấu trong một tệp, thay vì cung cấp cho bạn mỗi lần xuất hiện của nó trên mỗi tệp.
Có lẽ bạn muốn mở ngay lập tức từng tệp nơi tìm thấy kết quả khớp? Chà, thay đổi nhỏ sau đây ở trên khá hữu ích, tùy thuộc vào những gì bạn có liên kết tệp mặc định của mình là:
gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString -list | ii
-filter "*.cpp","*.h"
chấp nhận nhiều phần mở rộng? Điều này nên đọc-include ("*.cpp","*.hpp")
trong khi thực hiện bản địa hóa một số SW, tôi sử dụng DocFetcher để tìm kiếm các chuỗi tương tự trong các tệp được dịch trước đó. Nó là nguồn mở và miễn phí, nhưng cần tạo chỉ mục trước. Hãy thử nó. :-)
Nếu bạn hài lòng với dòng lệnh / với Linux. Tôi có thể đề nghị xem xét việc cài đặt phiên bản grep cho windows không?
cygwin là một cách khá tiện lợi để hiểu về điều đó và sẽ cung cấp cho bạn một môi trường Linux đầy đủ, với bash shell và thiết bị đầu cuối rxvt. Mặt khác, nếu bạn chỉ muốn các công cụ có gnuwin32 nhưng sau đó bạn sẽ bị kẹt với dấu nhắc cmd.exe của Windows.
Microsoft thực sự có phiên bản riêng của các công cụ Unix dưới dạng tải xuống, nhưng chúng có vẻ khá chậm so với các cổng gnu khi tôi dùng thử. Họ cũng sẽ loại bỏ chúng bằng Windows 8.
Đây là cách tôi tìm kiếm các chuỗi văn bản trong Windows Registry hoặc các tệp trên máy Windows XP của mình. Giả sử tôi muốn tìm chuỗi "Enterprise" trong tệp văn bản thuần trên ổ đĩa c: sau đó ghi đầu ra vào tệp có tên search_result.txt trong c: \ windows \ temp
Mở một dấu nhắc lệnh sau đó gõ:
findstr "Doanh nghiệp" c: *. txt> c: \ windows \ temp \ search_result.txt
Chuỗi bạn tìm kiếm là trường hợp nhạy cảm. "Doanh nghiệp" và "doanh nghiệp" sẽ không tìm thấy cùng một chuỗi.