Какой самый быстрый (точный) способ поиска строки текста в файлах на компьютере с Windows?


9

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

Конкретно я ищу .cppи .hфайлы.


Ответы:


11

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

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

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

Ура :)


Да, я должен признать, я использовал Notepad ++ для этого раньше.
Джон Кейдж

1
@JonCage есть кто-то в этой теме sevenforums.com/software/…, который также говорит, что вы говорите: «Я признаю», когда дело доходит до полезных вещей. Это очень странный способ говорить. Возможно, вы захотите встретиться с этим человеком. Может быть, твой близнец.
Барлоп

Блокнот ++ отличный. Редакторы других программистов, такие как SciTE, также имеют схожую функциональность.
TimothyAWiseman


5

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


5

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

http://www.wingrep.com/


Windows Grep может иногда работать нестабильно, но это самая быстрая поисковая программа, которую я когда-либо использовал.
якатц

@yakatz Спасибо за упоминание о возможной нестабильности с Windows Grep, я буду искать другой инструмент grep / replace!
pacoverflow

wingrep больше не выпускается , однако grepwin все еще доступен и работает очень хорошо.
techturtle

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


Я собирался опубликовать то же самое :)
Калеб Ярес

Вы уверены, что -filter "*.cpp","*.h"поддерживает несколько расширений? Это лучше читать-include ("*.cpp","*.hpp")
mloskot

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.