8

Как видно из заголовка, какой самый быстрый (точный) способ найти, какие строки каких файлов соответствуют определенной строке.

В частности, я ищу файлы .cpp и .h .

10 ответов10

10

В Notepad++ есть опция «найти в файлах», которая находится в меню «Поиск». Это позволит вам искать несколько файлов в папке (вы можете указать папку) и покажет вам номера строк каждого файла. Вы можете указать, включены ли в поиск подпапки и скрытые папки, и это также позволит вам выполнять поиск с помощью \t \n и т.д., А также выполнять поиск с помощью регулярных выражений, если это необходимо.

Notepad++ - это редактор для Windows (не IDE), а также с открытым исходным кодом.

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

Ура :)

5

В системах Unix люди, скорее всего, будут использовать grep для этого, так почему бы не использовать Windows Grep?

http://www.wingrep.com/

5

Findstr всегда работает для меня. Он может использовать текст * подстановочные знаки или регулярное выражение для строки поиска. Findstr /? для большего

5

Агент Рансак работает как шарм. Загрузите это здесь.

3

Вот решение Powershell:

gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString

-r в gci для Recurse, и, конечно , не является обязательным, как и два расширения файла фильтров. Полезным параметром Select-String является -list который будет сообщать только о первом экземпляре совпадения в файле, а не сообщать о каждом его появлении в файле.

Возможно, вы хотите мгновенно открыть каждый файл, в котором найдено совпадение? Ну, следующее небольшое изменение к вышесказанному весьма полезно, в зависимости от того, какая у вас файловая ассоциация по умолчанию:

gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString -list | ii

2

делая локализацию некоторого ПО, я использую DocFetcher для поиска тех же строк в ранее переведенных файлах. Это бесплатно и с открытым исходным кодом, но сначала нужно создать индекс. Просто попробуйте. :-)

1

Используйте "строки", предоставленные M $. Они купили несколько очень хороших утилит у Sysinternals несколько лет назад. Не требует установки, просто поместите его на коробку и запустите для синтаксиса. Простой в использовании и БОЛЬШОЙ!

1

Еще одна реализация grep для Windows от известных разработчиков svn-черепах:

grepWin

0

Если вы счастливы в командной строке / с Linux. Могу я порекомендовать посмотреть на установку версии grep для Windows?

Cygwin - довольно удобный способ справиться с этим и предоставит вам полноценную среду Linux с оболочкой bash и терминалом rxvt. В противном случае, если вам просто нужны инструменты, есть gnuwin32, но тогда вы застрянете с приглашением Windows cmd.exe.

У Microsoft фактически есть собственная версия инструментов Unix для загрузки, но они казались довольно медленными по сравнению с портами GNU, когда я их пробовал. Они также собираются отказаться от них с Windows 8.

0

Вот как я ищу текстовые строки в реестре Windows или файлы на моем компьютере с Windows XP. Давайте предположим, что я хочу найти строку "Enterprise" в текстовом файле на диске c:, а затем записать вывод в файл с именем search_result.txt в c:\windows\temp

Откройте командную строку и введите:

findstr "Предприятие" c:*. txt> c:\windows\temp\search_result.txt

Строка, которую вы ищете, чувствительна к регистру. "Предприятие" и "предприятие" не найдут одну и ту же строку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .