Ответ 1
Windows Grep делает это действительно хорошо.
Изменить: Windows Grep больше не поддерживается или не предоставляется разработчиком. Альтернативная ссылка для загрузки находится здесь: Windows Grep - alternate
Мне нужно изменить некоторые строки подключения в невероятно старом устаревшем приложении, и программисты, которые подумали, что было бы неплохо замаскировать все приложение со строками подключения повсюду.
В Visual Studio "текущий проект" поиск невероятно медленный, и я не доверяю Windows Search.
Итак, какой лучший бесплатный, неиндексированный текстовый инструмент для поиска? Все, что он должен сделать, это вернуть список с файлами, которые содержат нужную строку внутри папки и ее подпапок.
Я запускаю Windows 2003 Server.
Windows Grep делает это действительно хорошо.
Изменить: Windows Grep больше не поддерживается или не предоставляется разработчиком. Альтернативная ссылка для загрузки находится здесь: Windows Grep - alternate
Я поклонник диалога Find-In-Files в Notepad ++. Бонус: бесплатно.
Существует также встроенная программа Windows под названием findstr.exe
, с помощью которой вы можете выполнять поиск в файлах.
>findstr /s "provider=sqloledb" *.cs
Агент Ransack - еще один хороший. Он быстрый, бесплатный и имеет некоторые другие интересные функции, такие как интеграция с оболочкой.
Мне нравится AstroGrep. Результаты показаны в списке. Щелчок по строке показывает вам всю строку в виде предварительного просмотра, подчеркивающего удар. Кажется, это довольно быстро, худощаво и свободно. Протестировано в Windows 7, 8, 10 и Windows Server 2008 R2. Позволяет регулярные выражения.
AstroGrep - это утилита поиска файлов в формате Microsoft Windows (grep). Его функции включают регулярные выражения, универсальные параметры печати, хранят самые последние используемые пути и имеют "контекстную" функцию, которая очень хороша для просмотра исходного кода.
Ссылка: AstroGrep
Я большой поклонник grepWin. Он бесплатный, легкий и доступный из оболочки исследователя. Мне нравится, когда вам не нужно специально искать и запускать программу, чтобы что-то искать. Я могу просто щелкнуть правой кнопкой мыши в проводнике и поднять его.
SeekFast очень удобно искать текст в файлах - текстовых файлах, MS Word, Excel, OpenOffice и других. Он имеет бесплатную версию.
FileSeek. Это быстро и бесплатно. Он может находить текстовые строки или соответствовать регулярным выражениям.
Поиск 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 для содержимого и все для имен файлов (потрясающий инструмент, мгновенные результаты!).
TextPad действительно хорош для такого рода вещей. Вы можете использовать его бесплатно, но вы получите предупреждающее сообщение с просьбой его купить. Помимо этого, это отличный инструмент.
Если вы не хотите устанавливать инструменты сторонних разработчиков, загрузите 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
Вы можете установить cygwin (требуется некоторое время) и использовать grep -R.
Я обычно использую grep или find from unxutils. Это отлично работает на ms-windows.
FileSearchy. Это быстро и бесплатно. Он имеет индексирование, но только для имен файлов, а не для содержимого.
Я бы порекомендовал GOW над cygwin, так как он намного легче, но все же включает grep, а также еще 130 или около того * nix Утилиты командной строки в 18 МБ вместо > 100 МБ.
Если вы ищете консольную утилиту для этого, вы можете обратиться к этому URL-адресу и создать его для себя.
то, что есть, - это найти список текста поиска в папке и сопоставить возвращаемый файл с тем же именем, если он также содержит текст
Я могу порекомендовать ack - программу командной строки с корнями linux, которая, к счастью, прекрасно работает и в Windows. Это быстрее, чем grep, он игнорирует каталоги git/subversion и двоичные файлы, и вывод более понятен. И печатать ack на 25% быстрее, чем grep;)
Я попробовал это на babun (cygwin) и msys из git - работает сказочно. Он написан на Perl, поэтому должен работать и в cmd.exe с Perl, установленным где-то на ОС.