Windows поиск в файлах строки

Обновлено: 01.07.2024

В Windows есть некоторые встроенные возможности поиска, но они могут вам не понравиться. Cortana или стандартное поле поиска на панели задач и поле поиска в проводнике файлов в Windows 10 позволяют выполнять поиск по содержимому файлов, но они могут быть медленными, особенно поиск в проводнике.

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

ПРИМЕЧАНИЕ. Команда find не подходит для больших файлов или большого количества файлов.

Сегодня мы рассмотрим, как использовать команду find, и приведем несколько примеров.

Откройте окно командной строки с правами администратора

Открытие окна командной строки от имени администратора не требуется. Тем не менее, это поможет вам избежать раздражающих диалоговых окон подтверждения. Просто будьте осторожны, какие команды вы запускаете от имени администратора в командной строке. Использование команды find в качестве администратора безопасно, поскольку она не изменяет и не удаляет файлы.

Введите cmd.exe в поле поиска на панели задач. Затем щелкните правой кнопкой мыши на пункт « Командная строка» и выберите « Запуск от имени администратора» во всплывающем меню.

Если появится диалоговое окно « Контроль учетных записей », нажмите « Да», чтобы продолжить.

ПРИМЕЧАНИЕ. Это диалоговое окно может не отображаться в зависимости от настроек контроля учетных записей. Мы не рекомендуем полностью отключать UAC.

Ключи и параметры для команды find

Большинство команд имеют дополнительные ключи, которые изменяют стандартное действие команды. Вы можете получить справку, чтобы увидеть все доступные ключи для команды find , набрав в строке следующую строку и нажав Enter:

Ключи могут быть строчными или прописными.

Для параметра «string» вы должны заключить строку в двойные кавычки, иначе команда find не будет работать и вернет ошибку.

Параметр имени диска [drive:] [path] может быть любым, от буквы диска до одного файла или нескольких файлов.

Синтаксис для команды поиска

Синтаксис команды - это особый способ организации команды, ее ключей и параметров. Ниже приведен общий синтаксис команды find.

find [ ключи ] " строка " [ путь ]

Ключи могут быть в любом порядке, если они находятся перед параметром «string» . Скобки [] указывают, что ключ или параметр является необязательным.

Поиск отдельного документа для текстовой строки

Сначала мы покажем вам, как искать в одном документе все вхождения текстовой строки. Следующая команда ищет в файле example1.txt фразу «groovypost - is the best tech site».

find "groovypost - is the best tech site" "C:\Users\Lori\Documents\FindCommandExamples\example1.txt"

ПРИМЕЧАНИЕ. Если в какой-либо части пути или имени файла есть пробелы, вы должны заключать в кавычки весь путь, как мы делали в приведенной выше команде. Кавычки на самом деле не нужны в этом случае, но они точно не помешают.

Обратите внимание, что фраза не была найдена в приведенном выше примере (ничего не указано под путем к файлу), даже если она находится в файле. Это потому, что случай в «groovypost» не совпадает с тем, что было в файле, то есть «groovyPost». Добавьте ключ « /i » (ignore case) сразу после команды поиска (перед фразой), чтобы игнорировать регистр при поиске текстовой фразы.

find /i "groovypost - is the best tech site" "C:\Users\Lori\Documents\FindCommandExamples\example1.txt"

Теперь фраза найдена, и вся строка, содержащая фразу, выводится на экран под путем к файлу, в котором выполняется поиск.

Поиск нескольких документов по одной и той же текстовой строке

Теперь, когда вы можете искать один файл для текстовой строки, давайте искать несколько файлов для одной и той же строки.

Вы можете указать несколько файлов для поиска в команде поиска, указав путь к каждому файлу в кавычках через пробел.

find /i "groovypost" "C:\Users\Lori\Documents\FindCommandExamples\example1.txt" "C:\Users\Lori\Documents\FindCommandExamples\example2.txt"

Вы также можете искать все текстовые файлы в каталоге, используя подстановочный знак, который является звездочкой (*), как показано в следующей команде.

find /i "groovypost" "C:\Users\Lori\Documents\FindCommandExamples\*.txt"

Поисковый термин был найден в обоих документах, а предложения, в которых они были найдены, перечислены под полным путем к каждому файлу.

Подсчитать количество строк в файле

Если вы хотите узнать, сколько строк в файле, вы можете использовать комбинацию команд type и find . Команда type отображает содержимое одного или нескольких текстовых файлов.

Мы передали результаты команды type в команду find, используя вертикальную черту (|). Мы использовали ключ « /v » для отображения всех строк, НЕ содержащих строку «» , поэтому каждая строка с текстом будет подсчитана. Чтобы отобразить только количество строк в текстовом файле (не сами строки), мы используем ключ « /c ».

type C:\Users\Lori\Documents\FindCommandExamples\example1.txt | find "" /v /c

Отправьте вывод другой команды в команду поиска

Вы также можете выполнить поиск определенной строки во всех именах файлов в каталоге, отправив выходные данные команды dir в команду find .

Например, мы получили список каталогов C:\Users\Lori\Documents\FindCommandExamples и все подкаталоги в этом каталоге (ключ /s ). Мы также указали использовать пустой формат без информации о заголовке (ключей « /b ») и отобразили список в том же формате, что и формат широкого списка (ключ « /w »), но отсортированный по столбцу (« /d »).

Затем мы направляем (|) вывод команды dir в команду find, добавляя только «example» в качестве параметра. Мы не добавляли никаких ключей в команду поиска. Имена файлов для поиска берутся из вывода команды dir .

dir "C:\Users\Lori\Documents\FindCommandExamples" /s /b /d | find "example"

А вы предпочитаете использовать команду поиска или поле поиска в проводнике? Как вы использовали команду поиска? Поделитесь своими идеями и примерами с нами в комментариях ниже.

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

Формат командной строки:

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "строка" [[диск:][путь]имя_файла[ . ]] Параметры команды:

/V - Вывод всех строк, НЕ содержащих заданную строку.
/C - Вывод только общего числа строк, содержащих заданную строку.
/N - Вывод номеров отображаемых строк.
/OFF[LINE] - Не пропускать файлы с установленным атрибутом "Автономный".
/I - Поиск без учета регистра символов.
"строка" - Искомая строка.
[диск:][путь]имя_файла - Один или несколько файлов, в которых выполняется поиск.

FIND /? - выдать справку по использованию команды.

find /I myfile.txt "новость" - выполнить поиск строки новость без учета регистра символов в текстовом файле myfile.txt . По умолчанию, если не задан параметр /I регистр символов учитывается.

find /C myfile.txt "новость" - отобразить общее количество строк, содержащих текст "новость".

FIND /I %TEMP%\*.tmp "windows" - выполнить поиск в каталоге временных файлов для всех файлов с расширением tmp строк , содержащих текст windows без учета регистра символов.

FIND /I %TEMP%\*.tmp "windows" | more - то же, что и в предыдущем примере, но с использованием постраничного вывода на экран.

ipconfig /all | FIND "DNS" - из вывода команды ipconfig /all найти строки, содержащие текст DNS

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

Соответственно, пример с поиском во временных файлах, приведенный выше, в ОС Windows XP ( значение переменной %TEMP% по умолчанию принимает путь с пробелами ) будет выполняться верно при использовании следующей команды:

Естественно, шаблон имени файла *.tmp использовавшийся в примере выше, при перенаправлении ввода применять нельзя ( перенаправление можно выполнять для конкретного файла - textfile.tmp в примере ) и для организации поиска текстовой строки в нескольких файлах можно воспользоваться циклической обработкой их содержимого , например, с помощью команды FOR .

@ECHO OFF
for %%i in ("%TEMP%\*.tmp") do FIND %%i "windows"
. . .

А в случае недоступности, строка символов "TTL" в выводимых результатах отсутствует. Если строка символов "TTL" найдена, то FIND сформирует значение переменной ERRORLEVEL равным 0 Таким образом, для определения факта доступности узла в командном файле можно воспользоваться следующим способом:

ping -n 1 COMPUTER | find /I "TTL" > nul
if %ERRORLEVEL%==0 goto LIVE
ECHO computer не доступен
подпрограмма обработки недоступного состояния
. . .
Exit
:LIVE - начало подпрограммы обработки состояния доступности узла
. . .
. . .

Выполняет поиск строки текста в файле или файлах и отображает строки текста, содержащие указанную строку.

Синтаксис

Параметры

Параметр Описание
/v Отображает все строки, не содержащие указанный объект <string> .
/C Подсчитывает количество строк, содержащих указанный объект <string> , и отображает итоговое значение.
/n Предшествует каждой строке с номером строки файла.
/i Указывает, что при поиске регистр не учитывается.
["/OFF" [строка]] Не пропускает файлы с установленным атрибутом "вне сети".
<"string"> Обязательный. Задает группу символов (заключенных в кавычки), которые требуется найти.
[<drive>:][<path>]<filename> Указывает расположение и имя файла, в котором выполняется поиск указанной строки.
/? Отображение справки в командной строке.

Коды выхода

Код выхода Описание
0 Искомая строка найдена
1 Искомая строка не найдена
2 Искомый файл не найден, или указан недопустимый параметр командной строки

Remarks

Если вы не используете /i, эта команда ищет именно то, что указано для String. Например, эта команда обрабатывает символы и по a - A разному. Однако при использовании параметра /i Поиск не учитывает регистр, он интерпретируется a и как один и тот A же символ.

Если строка, которую нужно найти, содержит кавычки, необходимо использовать двойные кавычки для каждой кавычки, содержащейся в строке (например, ""). Эта строка содержит кавычки "" ").

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

Чтобы выйти из поиска в консоли, используйте CTRL-X или CTRL-z .

Параметры и параметры командной строки для команды Find можно вводить в любом порядке.

В строке, в которой выполняется поиск, нельзя использовать подстановочные знаки (* и ?). Для поиска строки с подстановочными знаками и шаблонами регулярных выражений можно использовать команду findstr .

При использовании /c и /v в одной командной строке эта команда отображает количество строк, которые не содержат указанную строку. При указании параметра /c и /n в той же командной строке команда Find игнорирует параметр /n.

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

Команда принимает подстановочные знаки для имен файлов. При поиске в файле (или файлах) будет распечатан файл обработанного файла предецеасед на десять штрихов.

Команда Find не может читать альтернативные потоки данных. Для поиска в альтернативных потоках данных используйте команды findstr, More или for/f .

Примеры

Чтобы отобразить все строки из Pencil.md , которые содержат строку резкость карандаша, введите:

Чтобы найти текст, «специалисты, обозначенные в документе только для обсуждения. Это не окончательный отчет ". (включая кавычки) в файле report.txt , введите:

Для поиска набора файлов можно использовать подстановочные знаки. Чтобы найти в текущем каталоге файлы с расширением .bat и, которые содержат строку без учета регистра, введите следующую команду :

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

Команда find сообщает имена файлов, в которых был найден искомый файл, и выводит строки, в которых он содержится.

Синтаксис команды find :

Поиск текста в файлах через командную строку Windows

Дело в том, что по умолчанию текст в командной строке Windows отображается согласно кодовой странице CP866, а в файлах он в кодовой странице CP1251. Поэтому нам достаточно сменить кодовую страницу в текущем окне командной строки. О том, как это сделать, можно прочитать в статье по этой ссылке.

Поиск текста в файлах через командную строку Windows

Такие оказались только в файле FILE_1.TXT.

Поиск текста в файлах через командную строку Windows

Поиск текста в файлах через командную строку Windows

Поиск текста в файлах через командную строку Windows

Если мы захотим знать число строк, в которых присутствует искомое слово, тогда выполним команду:

А если нам нужно знать число строк, где это слово отсутствует, тогда пример команды такой:

Поиск текста в файлах через командную строку Windows

Хотя до этого в примерах мы искали отдельное слово, find спокойно ищет и выражения:

Поиск текста в файлах через командную строку Windows

Особенностью команды find является то, что искомый текст обязательно нужно заключать в кавычки. Это приводит к трудностям, если в пути к файлам (и в именах файлов) содержится пробел. В таком случае нужно воспользоваться перенаправлением ввода, но только если мы ищем в конкретном файле.

Как видите, наличие пробела в имени каталога C:\test test\ не помешало осуществить поиск. Но это что касается поиска в файле file_1.txt. А вот попытка поискать сразу во всех файлах привела к ошибке.

Поиск текста в файлах через командную строку Windows

В таком случае можно воспользоваться циклическое обработкой, к примеру, командой for :

Поиск текста в файлах через командную строку Windows

Помните, что в этом случае в командной строке нужно использовать конструкции вида %a, а в файлах .bat и .cmd вида %%a.

До этого в примерах мы всегда указывали в каких файлах искать. Если этого не сделать, то команда find выполняет поиск в тексте консоли или в тексте, который был передан по конвейеру другой командой.

Поиск текста в файлах через командную строку Windows

Здесь мы лишь пробежались по вершинам, но возможности команды find гораздо больше. Особенно, если использовать её в комплексе с другими командами.

FIND - описание команды и примеры использования

FIND - Поиск заданной строки текста в файле или нескольких файлах.

Описание

После поиска в заданных файлах команда find выведет на экран все строки из этих файлов, содержащие заданный образец.

Синтаксис

Параметры

Параметр Описание
/v Выводит все строки, не содержащие строку, заданную параметром строка
/c Подсчет строк, содержащих строку, указанную параметром строка, и отображение общего количества
/n Выводит номера строк перед самими строками
/i Задает поиск без различия строчных и заглавных букв
"строка_поиска" Обязательный параметр. Указывает группу символов, поиск которой будет производиться. Необходимо заключить параметр строка в кавычки ("строка")
[диск:][путь] ИмяФайла Задает местоположение и имя файла, в котором будет производиться поиск заданной строки символов
/? Отображение справки в командной строке

Примечания

  • Если ключ /i не указан, команда find ищет именно то, что указано в параметре строка. Например, для команды find символы "a" и "A" являются различными. Если используется ключ /i, команда find не различает строчные и прописные буквы, и символы "a" и "A" являются одинаковыми.
  • Если строка поиска содержит кавычки, при вызове команды каждая кавычка в строке поиска должна быть заменена двумя символами кавычек ("СтрокаСодержания""Кавычки").
  • Если имя файла пропущено, find действует как фильтр, получая ввод из стандартного источника вывода (обычно клавиатура, канал или файл перенаправления), и выводит все строки, содержащие параметр строка.
  • Параметры и ключи команды find могут быть заданы в произвольном порядке.
  • Подстановочные знаки (* и ?) не могут быть использованы в именах файлов и расширениях, задаваемых в команде find. Чтобы искать строку в множестве файлов, указанных с помощью подстановочных знаков, можно использовать команду find в команде for.
  • Если в одной команде заданы ключи /c и /v, команда find выведет на экран количество строк, которые не содержат заданную строку поиска. Если в одной команде указаны оба ключа: /c и /n, команда find игнорирует ключ /n.
  • Команда find не распознает символ перевода строки. Когда команда find используется для поиска текста в файле, который содержит символы перевода строки, необходимо ограничить строку поиска текстом, который может быть найден между символами перевода строки (строка не может прерываться символом перевода строки). Например, find не найдет совпадение для строки "файл налогов" если перевод строки в файле стоит между словами "файл" и "налогов".

Примеры

Для вывода всех строк из файла Pencil.ad, которые содержат слова "Точилка" служит следующая команда:

Для поиска строки, содержащей текст, указанный в кавычках, необходимо сначала заключить в кавычки всю строку. Во-вторых, необходимо использовать двойные кавычки для каждых кавычек, содержащихся в строке. Для поиска фразы "Точилка" (именно с ковычками в файле Pencil.ad:

Если поиск требуется провести в нескольких файлах, следует использовать команду find с командой for. Для поиска файлов с расширением .bat, содержащих строку "PROMPT", можно использовать следующую команду:

Так как команда find проводит поиск, различая строчные и заглавные буквы, а команда dir выводит результаты заглавными буквами, необходимо задать строку "CPU" заглавными буквами или использовать ключ /i в команде find.

Читайте также: