Как видно из заголовка, какой самый быстрый (точный) способ найти, какие строки каких файлов соответствуют определенной строке.
В частности, я ищу файлы .cpp
и .h
.
В Notepad++ есть опция «найти в файлах», которая находится в меню «Поиск». Это позволит вам искать несколько файлов в папке (вы можете указать папку) и покажет вам номера строк каждого файла. Вы можете указать, включены ли в поиск подпапки и скрытые папки, и это также позволит вам выполнять поиск с помощью \t \n и т.д., А также выполнять поиск с помощью регулярных выражений, если это необходимо.
Notepad++ - это редактор для Windows (не IDE), а также с открытым исходным кодом.
(Я понимаю, что вы, скорее всего, слышали о notepad++, но я просто упоминаю его здесь как вариант, если вы не знали об этой конкретной функции и о других, кто позже наткнется на эту тему.
Ура :)
В системах Unix люди, скорее всего, будут использовать grep для этого, так почему бы не использовать Windows Grep?
Findstr
всегда работает для меня. Он может использовать текст * подстановочные знаки или регулярное выражение для строки поиска. Findstr /?
для большего
Агент Рансак работает как шарм. Загрузите это здесь.
Вот решение 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
делая локализацию некоторого ПО, я использую DocFetcher для поиска тех же строк в ранее переведенных файлах. Это бесплатно и с открытым исходным кодом, но сначала нужно создать индекс. Просто попробуйте. :-)
Используйте "строки", предоставленные M $. Они купили несколько очень хороших утилит у Sysinternals несколько лет назад. Не требует установки, просто поместите его на коробку и запустите для синтаксиса. Простой в использовании и БОЛЬШОЙ!
Еще одна реализация grep
для Windows от известных разработчиков svn-черепах:
Если вы счастливы в командной строке / с Linux. Могу я порекомендовать посмотреть на установку версии grep для Windows?
Cygwin - довольно удобный способ справиться с этим и предоставит вам полноценную среду Linux с оболочкой bash и терминалом rxvt. В противном случае, если вам просто нужны инструменты, есть gnuwin32, но тогда вы застрянете с приглашением Windows cmd.exe.
У Microsoft фактически есть собственная версия инструментов Unix для загрузки, но они казались довольно медленными по сравнению с портами GNU, когда я их пробовал. Они также собираются отказаться от них с Windows 8.
Вот как я ищу текстовые строки в реестре Windows или файлы на моем компьютере с Windows XP. Давайте предположим, что я хочу найти строку "Enterprise" в текстовом файле на диске c:, а затем записать вывод в файл с именем search_result.txt в c:\windows\temp
Откройте командную строку и введите:
findstr "Предприятие" c:*. txt> c:\windows\temp\search_result.txt
Строка, которую вы ищете, чувствительна к регистру. "Предприятие" и "предприятие" не найдут одну и ту же строку.