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

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

Поиск «текущего проекта» в Visual Studio невероятно медленный, и я не доверяю поиску Windows.

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

Я использую Windows 2003 Server.


person kitsune    schedule 25.11.2008    source источник
comment
010 Editor ищет огромные файлы за 0 секунд.   -  person Morteza Ziyae    schedule 01.09.2015
comment
Depeche View превосходит все остальное на этой странице, без сомнения. Есть несколько ярлыков, которым вы захотите уделить пару минут, чтобы прочитать файл справки и изучить их. stahlworks.com/dev/depeche-view.html   -  person BVernon    schedule 26.05.2016
comment
Я тоже часто использую это, однако это заставляет вас щелкать каждый файл результатов, чтобы увидеть совпадения содержимого на правой панели. Также содержимое файла на правой панели не масштабируется (размер шрифта слишком мал).   -  person Meryan    schedule 22.03.2017
comment
Это хороший вопрос для разработки программного обеспечения, но оффтоп на SO. Какой сайт сети SE соответствует теме? См., например. вопросы SE.SE о "кодовой базе поиска" Мы должны перенести этот вопрос так что можно открыть!   -  person smci    schedule 05.12.2018
comment
voidtools search Everything — лучший инструмент для поиска в Windows, он также может выполнять поиск внутри файлов по ключевому слову content:   -  person peter    schedule 22.02.2019
comment
Взгляните на File Content Finder в магазине приложений (отказ от ответственности — я разработчик). Он может выполнять поиск в текстовых/исходных файлах, а также в pdf, doc(x), xls(x) и даже в отсканированных файлах jpg/png — microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp   -  person Geo Systems    schedule 15.04.2019
comment
Если у вас открыта IntelliJ IDEA (или любая другая IDE Jetbrains), вы можете использовать функцию «Найти в пути» (Ctrl + Shift + F). Выберите Каталог и введите нужный путь.   -  person Impulse The Fox    schedule 30.04.2019


Ответы (6)


Исходный ответ

Windows Grep делает это очень хорошо.

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

Текущий ответ

Visual Studio Code имеет отличные возможности поиска и замены файлов. Это очень быстро, поддерживает регулярное выражение и предварительный просмотр в реальном времени перед заменой.

введите описание изображения здесь

person D'Arcy Rittich    schedule 25.11.2008
comment
ss64.com/nt/findstr.html - person JohnnyFromBF; 10.12.2012
comment
На моей машине (Windows 7) он дважды зависал. Я попробую что-нибудь еще. - person B. Clay Shannon; 22.10.2013
comment
Он старый, у меня тоже сломался. Даже если он не идеален для некоторых целей, grepWin лучше, имхо - person Paolo; 28.10.2013
comment
AstroGrep также быстр и не стабилен - person Zorb; 30.10.2013
comment
У меня отлично работало на Windows 7 - без сбоев - person w5m; 10.12.2014
comment
Я обнаружил, что диалоговое окно выбора файла в старом стиле практически непригодно для использования, поскольку панель была крошечной и не имела горизонтальной прокрутки, более глубокие папки, начинающиеся с одинаковых букв, было невозможно различить. Удалил, теперь использую AstroGrep. - person Amos M. Carpenter; 30.04.2015
comment
@AmosM.Carpenter На самом деле я написал свой собственный, так как хотел подчеркнуть скорость. - person D'Arcy Rittich; 30.04.2015
comment
Windows Grep не разрешает поиск в сети :( - person BVernon; 26.05.2016
comment
Я даю свое мнение AstroGrep. У меня был Windows Grep, и это сработало. Сегодня решил сделать поиск по всему HDD, при индексации вылетает. Скачал AstroGrep, работает как шарм и более удобен в использовании. - person BackSlash; 21.09.2016
comment
Кажется, этот инструмент больше не доступен, только что проверил. - person Carlos; 16.11.2016
comment
Вы пробовали использовать функцию «Найти в файлах»? - person daniel; 21.03.2017
comment
Вы можете попробовать File Content Replacer. Он может искать множество файлов, таких как документ Word, Excel Fiile, PDF и текстовые файлы. Он также имеет возможность замены текста в файлах. Это очень доступно. Попробуйте их бесплатную пробную версию на: kingsoftware.co.za/OrderFileContentReplacer.aspx - person chosenOne Thabs; 26.03.2017
comment
ссылка не работает - person Márcio Rossato; 22.02.2018
comment
Wingrep больше не доступен - person TungstenX; 12.06.2018
comment
Я работаю над приложением, еще не находит и не заменяет, но будет искать строки или регулярные выражения в файлах, перечислять файлы и дает возможность открыть в Notepad ++ или блокноте. easygrep.com - person user2924019; 01.03.2019
comment
Windows grep работает как шарм. Спасибо. - person Vaibhav Jain; 05.10.2020

Мне нравится диалоговое окно Найти в файлах в Блокнот++. Бонус: это бесплатно.

введите здесь описание изображения

person BQ.    schedule 25.11.2008
comment
Который, к сожалению, не может или не выполняет поиск по всем файлам Microsoft Word. Что-то о разнице между .doc и .docm я подозреваю - person Carl Witthoft; 17.01.2014
comment
@CarlWitthoft .docm, как и .docx, .xlsm и .xlsx, на самом деле являются сжатыми XML-документами. - person Ian Boyd; 04.02.2015
comment
он хорошо работает для небольших папок с нормальным количеством файлов, зависает для папок большого размера с большим количеством файлов, по крайней мере, когда я использую свой ноутбук. Чуть быстрее при использовании мощного ПК. Более того, пока он ищет, не может открывать никакие другие файлы. - person Mohammed Joraid; 12.02.2015
comment
Нашла свой текст. Однако не позволил мне выбрать в результатах, какие значения заменить, а какие оставить. Все или ничего? - person ofer.sheffer; 13.03.2015
comment
блокнот поиска в файлах - самый медленный, который я когда-либо использовал. Гораздо медленнее, чем другие инструменты, которые я пробовал в проекте ~ 6 ГБ, а для проектов ~ 20 ГБ он не может найти много строк, в то время как MSVC все еще работает хорошо. - person phuclv; 03.04.2015
comment
Не знал, что это даже вариант в блокноте ++. Отличное решение для поиска недостающих файлов! Однако у него, похоже, есть проблемы с большими размерами файлов. Иногда выдает ошибку, что файл слишком велик для открытия. - person Hooplator15; 18.11.2016
comment
NPP плохо поддерживает арабский текст, меняет местонахождение фактического текста (не только в результатах поиска, но и в редакторе). Поданные АЭС 5 запросы на поддержку арабского языка, по-видимому, не рассматриваются и объясняются ограничениями компонента Scintilla, используемого в АЭС. - person Meryan; 22.03.2017
comment
Вы можете попробовать File Content Replacer. Он может искать множество файлов, таких как документ Word, Excel Fiile, PDF и текстовые файлы. Он также имеет возможность замены текста в файлах. Это очень доступно. Попробуйте их бесплатную пробную версию на: kingsoftware.co.za/OrderFileContentReplacer.aspx - person chosenOne Thabs; 26.03.2017
comment
Классная функция, не знал, что в Notepad++ есть что-то подобное. Однако он не находит результатов в файлах Excel. - person rluks; 05.04.2018
comment
Если кому-то интересно, Sublime Text также имеет эту классную функцию. - person ndrplz; 10.07.2019
comment
у меня вылетает :( - person thomachan; 03.09.2019
comment
Полностью зависает notepad++. Такой убогий дизайн. - person Vaibhav Jain; 05.10.2020

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

>findstr /s "provider=sqloledb" *.cs
person JohnnyFromBF    schedule 10.12.2012
comment
Просто и эффективно! - person Markus Fantone; 02.09.2015
comment
Это намного быстрее, чем проводник Windows, и фактически нашел текст, который я искал, тогда как использование проводника Windows не дало мне результатов поиска. Спасибо. - person mbomb007; 12.11.2015
comment
Для меня лучший ответ на эту тему, потому что не нужно ничего устанавливать. В моем случае мне пришлось добавить некоторые аргументы, потому что на экране слишком много информации. Аргумент /M содержит только имя файла, содержащего искомую информацию. Чтобы получить доступ к руководству по команде findstr, введите findstr /? в консоли. - person Alexandre Ribeiro; 13.10.2017
comment
Это отличная утилита, но, кажется, она не может читать символы кириллицы в именах файлов. Например: FINDSTR: Cannot open ???????????.txt - person Artem Russakovskii; 16.02.2019
comment
findstr не поддерживает текст UTF16. - person David Bremner; 14.03.2019
comment
findstr великолепен, я рекомендую параметры s (все файлы и подкаталоги), p (пропустить нечитаемые), i (игнорировать регистр) и n (вывести номер строки) для большинства случаев (findstr /spin "[string]" *.*) - person Bodacious; 22.11.2019

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

Последний снимок экрана AstroGrep

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

Ссылка: AstroGrep

person Anytoe    schedule 05.11.2013
comment
Из всех перечисленных здесь, это единственное, что позволяет указать шаблоны исключения для папок. Очень полезно при попытке пропустить такие папки, как node_modules или bower_components. - person Mrchief; 02.11.2016
comment
Очень хорошее программное обеспечение, быстрое, настраиваемое и показывает файлы вместе с соответствующим контекстом. - person HanniBaL90; 17.11.2017
comment
И "быстрый" заслуживает второго упоминания... self == happy - person cssyphus; 06.12.2018

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

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

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

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

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

ОБНОВЛЕНИЕ: агент Ransack может быть настроен на поиск файлов определенных размеров, и с использованием ограничения ‹200 КБ это 1:15 минут для нового поиска и 5 секунд для последующих поисков. Быстрее, чем grepWin, и так же быстро, как VS в целом. Это на самом деле довольно приятно, если вы хотите сохранить несколько поисков на вкладках и не хотите загрязнять список недавно просматриваемых папок VS, и вы хотите сохранить возможность поиска двоичных файлов, чего VS, похоже, не хочет делать. Agent Ransack также создает пункт контекстного меню проводника, поэтому его легко запустить из папки. То же, что и grepWin, но с более приятным пользовательским интерфейсом и быстрее.

Моя новая настройка поиска — «Агент Ransack» для содержимого и «Все» для имен файлов (отличный инструмент, мгновенные результаты!).

person Steve    schedule 04.12.2014

Если вы не хотите устанавливать сторонние инструменты, загрузите 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
person FIBA    schedule 06.02.2014