Инструменты для поиска строк внутри файлов без индексации

Мне нужно изменить некоторые строки подключения в невероятно старом устаревшем приложении, и программисты, которые подумали, что было бы неплохо замаскировать все приложение со строками подключения повсюду.

В Visual Studio "текущий проект" поиск невероятно медленный, и я не доверяю Windows Search.

Итак, какой лучший бесплатный, неиндексированный текстовый инструмент для поиска? Все, что он должен сделать, это вернуть список с файлами, которые содержат нужную строку внутри папки и ее подпапок.

Я запускаю Windows 2003 Server.

Ответ 1

Windows Grep делает это действительно хорошо.

Изменить: Windows Grep больше не поддерживается или не предоставляется разработчиком. Альтернативная ссылка для загрузки находится здесь: Windows Grep - alternate

Ответ 2

Я поклонник диалога Find-In-Files в Notepad ++. Бонус: бесплатно.

enter image description here

Ответ 3

Существует также встроенная программа Windows под названием findstr.exe, с помощью которой вы можете выполнять поиск в файлах.

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

Ответ 4

Агент Ransack - еще один хороший. Он быстрый, бесплатный и имеет некоторые другие интересные функции, такие как интеграция с оболочкой.

Agent Ransack screenshot

Ответ 5

Мне нравится AstroGrep. Результаты показаны в списке. Щелчок по строке показывает вам всю строку в виде предварительного просмотра, подчеркивающего удар. Кажется, это довольно быстро, худощаво и свободно. Протестировано в Windows 7, 8, 10 и Windows Server 2008 R2. Позволяет регулярные выражения.

Последний скриншот AstroGrep

AstroGrep - это утилита поиска файлов в формате Microsoft Windows (grep). Его функции включают регулярные выражения, универсальные параметры печати, хранят самые последние используемые пути и имеют "контекстную" функцию, которая очень хороша для просмотра исходного кода.

Ссылка: AstroGrep

Ответ 6

Я большой поклонник grepWin. Он бесплатный, легкий и доступный из оболочки исследователя. Мне нравится, когда вам не нужно специально искать и запускать программу, чтобы что-то искать. Я могу просто щелкнуть правой кнопкой мыши в проводнике и поднять его.

Ответ 7

SeekFast очень удобно искать текст в файлах - текстовых файлах, MS Word, Excel, OpenOffice и других. Он имеет бесплатную версию.

Ответ 8

FileSeek. Это быстро и бесплатно. Он может находить текстовые строки или соответствовать регулярным выражениям.

Ответ 9

Поиск Visual Studio в папках, безусловно, самый быстрый из всех найденных.

Я считаю, что он интеллектуально ищет только текстовые (небинные) файлы, а последующие поиски в одной папке очень быстрые, в отличие от других инструментов (скорее всего, текстовые файлы подходят в кеш диска Windows).

VS2010 на обычном жестком диске, без SSD, занимает 1 минуту, чтобы искать 20-гигабайтную папку с 26k файлами, исходный код и двоичные файлы перепутаны. Просматриваются файлы 15k - остальные, скорее всего, пропускаются из-за двоичных файлов. Последующие поиски в той же папке имеют порядок секунд (пока материал не будет выведен из кеша).

Следующий ближайший я нашел для той же папки grepWin. Около 3 минут. Я исключил файлы размером более 2000 КБ (по умолчанию). Параметр "Включить двоичные файлы", кажется, ничего не делает с точки зрения ускорения поиска, похоже, что бинарные файлы все еще затронуты (ошибка?), Но они не отображаются в результатах поиска. Последующие поисковые запросы выполняют те же 3 минуты - не могут использовать кеш жесткого диска. Если я ограничу файлы размером менее 200 тыс., Начальный поиск - 2,5 мин, а последующие поиски - порядка секунд, примерно так же, как VS - в кеше.

Агент Ransack и FileSeek очень медленны в этой папке, около 20 минут, из-за поиска по всему, включая гигантские многогигабайтные двоичные файлы. По данным Монитора ресурсов они ищут около 10-20 МБ в секунду.

UPDATE: агент Ransack может быть настроен на поиск файлов определенных размеров и с использованием обрезания < 200KB: 1:15 мин для нового поиска и 5 секунд для последующих поисков. Быстрее, чем grepWin и так же быстро, как VS. Это действительно неплохо, если вы хотите сохранить несколько поисков в вкладках, и вы не хотите загрязнять список недавно найденных списков VS, и вы хотите сохранить возможность поиска двоичных файлов, которые VS, похоже, не хочет делать. Агент Ransack также создает запись контекстного меню проводника, поэтому его легко запускать из папки. То же, что и grepWin, но более удобный интерфейс и быстрее.

Моя новая настройка поиска - агент Ransack для содержимого и все для имен файлов (потрясающий инструмент, мгновенные результаты!).

Ответ 10

TextPad действительно хорош для такого рода вещей. Вы можете использовать его бесплатно, но вы получите предупреждающее сообщение с просьбой его купить. Помимо этого, это отличный инструмент.

Ответ 11

Если вы не хотите устанавливать инструменты сторонних разработчиков, загрузите STRINGS.EXE из Microsoft Sysinternals и выполните процедуру, подобную этой:

@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

Ответ 12

Вы можете установить cygwin (требуется некоторое время) и использовать grep -R.

Ответ 13

Я обычно использую grep или find from unxutils. Это отлично работает на ms-windows.

Ответ 14

FileSearchy. Это быстро и бесплатно. Он имеет индексирование, но только для имен файлов, а не для содержимого.

Ответ 15

Я бы порекомендовал GOW над cygwin, так как он намного легче, но все же включает grep, а также еще 130 или около того * nix Утилиты командной строки в 18 МБ вместо > 100 МБ.

Ответ 16

Если вы ищете консольную утилиту для этого, вы можете обратиться к этому URL-адресу и создать его для себя.

http://www.dotnetlogic.net/articles/search-for-filename-or-text-inside-other-files-in-directory-using-c/

то, что есть, - это найти список текста поиска в папке и сопоставить возвращаемый файл с тем же именем, если он также содержит текст

Ответ 17

Я могу порекомендовать ack - программу командной строки с корнями linux, которая, к счастью, прекрасно работает и в Windows. Это быстрее, чем grep, он игнорирует каталоги git/subversion и двоичные файлы, и вывод более понятен. И печатать ack на 25% быстрее, чем grep;)

http://beyondgrep.com/

Я попробовал это на babun (cygwin) и msys из git - работает сказочно. Он написан на Perl, поэтому должен работать и в cmd.exe с Perl, установленным где-то на ОС.