Как видно из заголовка, какой самый быстрый (точный) способ найти, какие строки каких файлов соответствуют конкретной строке.
Конкретно я ищу .cpp
и .h
файлы.
Как видно из заголовка, какой самый быстрый (точный) способ найти, какие строки каких файлов соответствуют конкретной строке.
Конкретно я ищу .cpp
и .h
файлы.
Ответы:
Notepad ++ имеет опцию «найти в файлах», которая находится в меню «Поиск». Это позволит вам искать несколько файлов в папке (вы можете указать папку) и покажет вам номера строк каждого файла. , Вы можете выбрать, будут ли вложенные и скрытые папки включаться в поиск, и это также позволит вам выполнять поиск с помощью \ t \ n и т. Д., А также выполнять поиск по регулярным выражениям, если вам нужно.
Notepad ++ - это редактор для Windows-программистов (не IDE) и тоже с открытым исходным кодом.
(Я понимаю, что вы, скорее всего, слышали о notepad ++, но я просто упоминаю его здесь как вариант, если вы не знали об этой конкретной функции и о других, кто позже наткнется на эту тему.
Ура :)
Агент Рансак работает как шарм. Загрузите это здесь .
В системах Unix люди, скорее всего, будут использовать grep для этого, так почему бы не использовать Windows Grep?
Вот решение 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
-filter "*.cpp","*.h"
поддерживает несколько расширений? Это лучше читать-include ("*.cpp","*.hpp")
делая локализацию некоторого ПО, я использую DocFetcher для поиска тех же строк в ранее переведенных файлах. Это бесплатно и с открытым исходным кодом, но сначала нужно создать индекс. Просто попробуйте. :-)
Если вы счастливы в командной строке / с 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
Строка, которую вы ищете, чувствительна к регистру. «Предприятие» и «предприятие» не найдут одну и ту же строку.