Công cụ tìm kiếm chuỗi bên trong tệp mà không lập chỉ mục [đã đóng]


170

Tôi phải thay đổi một số chuỗi kết nối trong một ứng dụng cũ vô cùng cũ và các lập trình viên đã nghĩ rằng nó sẽ là một ý tưởng tuyệt vời để tô điểm toàn bộ ứng dụng với các chuỗi kết nối ở mọi nơi.

Tìm kiếm "dự án hiện tại" của Visual Studio chậm đến mức khó tin và tôi không tin tưởng vào Windows Search.

Vì vậy, công cụ tìm kiếm văn bản miễn phí, không được lập chỉ mục tốt nhất hiện có là gì? Tất cả những gì cần làm là trả về một danh sách với các tệp chứa chuỗi mong muốn bên trong một thư mục và các thư mục con của nó.

Tôi đang chạy Windows 2003 Server.


010 Editortìm kiếm tập tin huuuge trong 0 giây.
Morteza Ziyae

Depeche View đánh bại mọi thứ khác trên trang này, nương tay. Có một vài phím tắt bạn sẽ muốn dành vài phút để đọc tệp trợ giúp và tìm hiểu. stahlworks.com/dev/depeche-view.html
BVernon

Tôi cũng sử dụng nó rất nhiều, tuy nhiên nó buộc bạn phải bấm vào từng tệp kết quả để xem nội dung khớp trên khung bên phải. Ngoài ra, nội dung tệp trên khung bên phải không thể phóng to (kích thước phông chữ quá nhỏ).
Meryan

Đây là một câu hỏi hay cho công nghệ phần mềm, nhưng không chính thức về SO. Đó là trang web mạng SE nào về chủ đề này? Xem ví dụ: câu hỏi SE.SE trên 'codebase tìm kiếm' Chúng ta nên di chuyển câu hỏi này để có thể mở lại!
smci

1
Hãy xem Trình tìm nội dung tệp trên cửa hàng ứng dụng (từ chối trách nhiệm - Tôi là nhà phát triển). Nó có thể tìm kiếm trong các tệp văn bản / nguồn, nhưng cũng có thể ở dạng pdf, doc (x), xls (x) và thậm chí là các tệp jpg / png được quét - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
Geo Systems

Câu trả lời:


60

Câu trả lời gốc

Windows Grep làm điều này thực sự tốt.

Chỉnh sửa: Windows Grep không còn được nhà phát triển duy trì hoặc cung cấp. Một liên kết tải xuống thay thế có ở đây: Windows Grep - thay thế

Câu trả lời hiện tại

Visual Studio Code có khả năng tìm kiếm và thay thế tuyệt vời trên các tệp. Nó cực kỳ nhanh, hỗ trợ regex và xem trước trực tiếp trước khi thay thế.

nhập mô tả hình ảnh ở đây



10
Trên máy của tôi (Windows 7), nó bị sập hai lần. Tôi sẽ thử thứ khác.
B. Clay Shannon

2
Nó đã cũ, nó đã sụp đổ cho tôi quá. Ngay cả khi không hoàn hảo cho một số mục tiêu, grepWin vẫn tốt hơn
Paolo

9
AstroGrep cũng nhanh và không có gì khác
Zorb

Hoạt động tốt với tôi trên Windows 7 - không gặp sự cố
w5m

364

Tôi là một fan hâm mộ của hộp thoại Tìm tập tin trong Notepad ++ . Phần thưởng : Nó miễn phí.

nhập mô tả hình ảnh ở đây


Thật không may, không thể - hoặc không-- tìm kiếm tất cả các tệp Microsoft Word. Tôi nghi ngờ về sự khác biệt giữa ".doc" và ".docm"
Carl Witthoft

11
@CarlWitthoft .docm, như .docx, .xlsm.xlsxthực sự là các tài liệu XML được nén.
Ian Boyd

1
Nó hoạt động tốt cho các thư mục nhỏ với số lượng tệp bình thường, treo với kích thước lớn với nhiều thư mục tệp, ít nhất là khi tôi sử dụng máy tính xách tay của mình. Nhanh hơn một chút khi sử dụng PC mạnh mẽ. Hơn nữa, trong khi tìm kiếm, không thể mở bất kỳ tệp nào khác.
Mohammed Joraid

Tìm thấy văn bản của tôi. Tuy nhiên, không cho phép tôi chọn trong các kết quả nên thay thế giá trị nào và giữ giá trị nào. Tất cả hoặc không có gì?
ofer.sheffer 13/03/2015

5
Không có ý tưởng này thậm chí là một tùy chọn trong notepad ++. Giải pháp tuyệt vời để tìm các tập tin bị thiếu! Tuy nhiên, nó dường như có vấn đề với kích thước tệp lớn. Đôi khi, nó đưa ra lỗi "tệp quá lớn để mở".
John ngày

167

Ngoài ra còn có một chương trình tích hợp Windows được gọi findstr.exemà bạn có thể tìm kiếm trong các tệp.

>findstr /s "provider=sqloledb" *.cs

3
Đơn giản và hiệu quả!
Markus Fantone

Điều này nhanh hơn nhiều so với Windows Explorer và thực sự tìm thấy văn bản mà tôi đang tìm kiếm, trong khi sử dụng Windows Explorer không mang lại kết quả tìm kiếm cho tôi. Cảm ơn.
mbomb007

1
Đối với tôi, câu trả lời tốt nhất về chủ đề này bởi vì bạn không cần phải cài đặt bất cứ điều gì. Trong trường hợp của tôi, tôi đã phải bổ sung thêm một số đối số vì có quá nhiều thông tin xuất hiện trên màn hình. Đối số / M chỉ liệt kê tên tệp có thông tin mà tôi đang tìm kiếm. Để truy cập hướng dẫn sử dụng lệnh findstr, gõ "findstr /?" trong bảng điều khiển.
Alexandre Ribeiro

Đây là một tiện ích tuyệt vời, nhưng có vẻ như nó không thể đọc các ký tự Cyrillic trong tên tệp. Ví dụ:FINDSTR: Cannot open ???????????.txt
Artem Russakovskii

1
findstr không hỗ trợ văn bản UTF16.
David Bremner

34

Tôi thích AstroGrep. Các kết quả được hiển thị trong một danh sách. Nhấp chuột vào một hàng sẽ hiển thị cho bạn toàn bộ dòng dưới dạng bản xem trước làm nổi bật bản hit. Nó dường như khá nhanh, nạc và nó là miễn phí. Đã thử nghiệm trên Windows 7, 8, 10 và Windows Server 2008 R2. Cho phép biểu thức chính quy.

Ảnh chụp màn hình AstroGrep mới nhất

AstroGrep là tiện ích Tìm kiếm tệp GUI của Microsoft Windows (grep). Các tính năng của nó bao gồm biểu thức chính quy, tùy chọn in đa năng, lưu trữ các đường dẫn được sử dụng gần đây nhất và có tính năng "ngữ cảnh" rất đẹp để xem mã nguồn

Tham khảo: AstroGrep


7
Tắt tất cả những cái khác được liệt kê ở đây, đây là cách duy nhất cho phép chỉ định các mẫu loại trừ cho các thư mục. Có thể hữu ích khi cố gắng bỏ qua các thư mục như node_moduleshoặc bower_components.
Mrchief 2/11/2016

1
Phần mềm rất tốt, nhanh, cấu hình và hiển thị các tệp cùng với bối cảnh liên quan
HanniBaL90

1
Và 'nhanh' xứng đáng được nhắc đến lần thứ hai ...self == happy
cssyphus

9

Tìm kiếm trong các thư mục của Visual Studio là nhanh nhất tôi đã tìm thấy.

Tôi tin rằng nó chỉ tìm kiếm thông minh các tệp văn bản (không phải nhị phân) và các tìm kiếm tiếp theo trong cùng một thư mục là cực kỳ nhanh, không giống như các công cụ khác (có thể là các tệp văn bản phù hợp với bộ đệm của windows windows).

VS2010 trên ổ cứng thông thường, không có SSD, mất 1 phút để tìm kiếm thư mục 20 GB với 26k tệp, mã nguồn và mã nhị phân trộn lẫn. Các tệp 15k được tìm kiếm - phần còn lại có khả năng bị bỏ qua do là tệp nhị phân. Các tìm kiếm tiếp theo trong cùng một thư mục được sắp xếp theo thứ tự giây (cho đến khi công cụ bị xóa khỏi bộ đệm).

Gần nhất tiếp theo tôi tìm thấy cho cùng một thư mục là grepWin. Khoảng 3 phút. Tôi đã loại trừ các tệp lớn hơn 2000KB (mặc định). Cài đặt "Bao gồm tệp nhị phân" dường như không làm gì về việc tăng tốc tìm kiếm, có vẻ như các tệp nhị phân vẫn bị chạm (lỗi?), Nhưng chúng không hiển thị trong kết quả tìm kiếm. Tất cả các tìm kiếm sau đó đều mất 3 phút như nhau - không thể tận dụng bộ nhớ cache của ổ cứng. Nếu tôi giới hạn ở các tệp nhỏ hơn 200k, thì tìm kiếm ban đầu là 2,5 phút và các tìm kiếm tiếp theo theo thứ tự giây, nhanh như VS - trong bộ đệm.

Agent Ransack và FileSeek đều rất chậm trên thư mục đó, khoảng 20 phút, do tìm kiếm mọi thứ, bao gồm các tệp nhị phân đa gigabyte khổng lồ. Họ tìm kiếm với tốc độ khoảng 10-20 MB mỗi giây theo Resource Monitor.

CẬP NHẬT: Ransack Agent có thể được đặt thành các tệp tìm kiếm có kích thước nhất định và sử dụng mức cắt <200KB, đó là 1: 15 phút cho tìm kiếm mới và 5s cho các tìm kiếm tiếp theo. Nhanh hơn grepWin và nhanh như VS nói chung. Nó thực sự khá đẹp nếu bạn muốn giữ một số tìm kiếm trong các tab và bạn không muốn làm ô nhiễm danh sách thư mục được tìm kiếm gần đây của VS và bạn muốn giữ khả năng tìm kiếm nhị phân, điều mà VS dường như không muốn làm. Agent Ransack cũng tạo ra một mục trình đơn ngữ cảnh thám hiểm, vì vậy thật dễ dàng để khởi chạy từ một thư mục. Tương tự như grepWin nhưng giao diện người dùng đẹp hơn và nhanh hơn.

Thiết lập tìm kiếm mới của tôi là Agent Ransack cho nội dung và Mọi thứ cho tên tệp (công cụ tuyệt vời, kết quả tức thì!).


3

Nếu bạn không muốn cài đặt các công cụ không phải của Microsoft, vui lòng tải xuống STRINGS.EXE từ Microsoft Sysiternals và thực hiện một quy trình như thế này:

@echo off
if '%1' == '' goto NOPARAM
if '%2' == '' goto NOPARAM
if not exist %1 goto NOFOLDER

echo ------------------------------------------
echo - %1 : folder
echo - %2 : string to be searched in the folder
echo - PLEASE WAIT FOR THE RESULTS ...
strings -s %1\* | findstr /i %2 > grep.txt
notepad.exe grep.txt

goto END

:NOPARAM rem - input command not correct
echo ====================================
echo Usage of GREP.CMD:
echo   Grep "SearchFolder" SearchString
echo Please specify all parameters
echo ====================================
goto END

:NOFOLDER
echo Folder %1 does not exist
goto END

:END rem - exit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.