Команда FINDSTR

    Команда FINDSTR используется для поиска текстовой строки в одном или нескольких файлах с использованием регулярных выражений. По сравнению с командой FIND данная команда позволяет выполнять значительно более гибкий поиск в соответствии с правилами, задаваемыми в качестве параметров командной строки. Регулярные выражения ( regular expressions ) - это своеобразный язык с применением обычных и специальных символов, задающих шаблон и алгоритм поиска. Обычные символы ( литералы ) - это привычные текстовые знаки - буквы, цифры, знаки препинания и т. п. Специальные символы ( метасимволы ) - это элементы записи правил и параметров обработки для обычных символов. Так, например, символ точка . означает "Любой символ", квадратные скобки - набор из заключенных в них символов, последовательность \d - любой цифровой символ, \D - любой не цифровой символ.

При необходимости обработки метасимволов как обычных элементов текста, в регулярных выражениях используется экранирующий символ - обратная косая черта \ . Запись \[ означает обычный символ раскрывающейся квадратной скобки, а не метасимвол для начала набора. Для экранирования нескольких метасимволов используется последовательность :

\Q . . . набор метасимволов . . .\E

Обратная косая черта перед обычным символом означает, что он интерпретируется как служебный символ:

\s - соответствует символу пробела.

При использовании в регулярных выражениях, строчные и заглавные символы различаются.

\S - любой символ, не пробел.

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

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл] [/C:строка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]] строки [[диск:][путь]имя_файла[ ...]]

/B - Искать образец только в началах строк.
/E - Искать образец только в конце строк.
/L - Поиск строк дословно.
/R - Поиск строк как регулярных выражений.
/S - Поиск файлов в текущей папке и всех ее подпапках.
/I - Определяет, что поиск будет вестись без учета регистра.
/X - Печатает строки, которые совпадают точно.
/V - Печатает строки, не содержащие совпадений с искомыми.
/N - Печатает номер строки, в которой найдено совпадение, и ее содержимое.
/M - Печатает только имя файла, в которой найдено совпадение.
/O - Печатает найденный строки через пустую строку.
/P - Пропускает строки, содержащие непечатаемые символы.
/OFF[LINE] - Не пропускает файлы с установленным атрибутом "Автономный".
/A:цвета - Две шестнадцатеричные цифры - атрибуты цвета. См. "COLOR /?"
/F:файл - Читает список файлов из заданного файла (/ для консоли).
/C:строка - Использует заданную строку как искомую фразу поиска.
/G:файл - Получение строк из заданного файла (/ для консоли).
/D:список_папок - Поиск в списке папок (разделяются точкой с запятой).
строка - Искомый текст.
[диск:][путь]имя_файла - Задает имя файла или файлов.


Для разделения нескольких искомых строк, если аргумент не имеет префикса /C, используется пробел. Например,

FINDSTR "Привет мир" file.txt поиск "Привет" или "мир" в файле file.txt

FINDSTR /C:"Привет мир" file.txt поиск строки "Привет мир" в файле file.txt.

Краткую справку по использованию команды FINDSTR можно получить при использовании ключа /?:

FINDSTR /?

Кроме параметров командной строки, справка дополнена краткой сводкой по синтаксису регулярных выражений:

. - Любой символ.
* - Повтор: ноль или более вхождений предыдущего символа или класса
^ - Позиция в строке: начало строки
$ - Позиция в строке: конец строки
[класс] - Класс символов: любой единичный символ из множества
[^класс] - Обратный класс символов: любой единичный символ из дополнения
[x-y] - Диапазон: любые символы из указанного диапазона
\x - Служебный символ: символьное обозначение служебного символа x
\< xyz - Позиция в слове: в начале слова
xyz\ > - Позиция в слове: в конце слова


За полной информацией о регулярных выражениях FINDSTR обратитесь к доступной интерактивной документации.

Примеры использования FINDSTR:

findstr /M [0-9] %temp%\*.* - отобразить список файлов ( ключ /M ), в которых содержатся цифры ( набор 0-9 ) из каталога временных файлов ( определяется %TEMP% )

findstr /P /I "Error" %temp%\*.* - Отобразить строки, содержащие слово Error . Поиск строк выполнять без учета регистра символов ( ключ /I ), строки, содержащие непечатаемые символы, не отображать ( ключ /P ) .

findstr /M /I /C:"network error" %windir%\system32\*.exe - отобразить список исполняемых файлов из системного каталога Windows\system32, в которых встречается строка "network error "

findstr /s /I /A:f4 /O /C:"failed" C:\*.log - отобразить строки файлов с расширением log, содержащие слово failed. Имя файла и смещение строки относительно его начала отображать красными символами на белом фоне ( ключ /A:F4 ). Поиск выполняется во всех файлах .log корневого каталога диска C: и всех его подкаталогов ( ключ /S )

findstr /A:FC /N /s /i "\< comput.*" *.* - отобразить строки, содержащие слово, начинающееся с " comput" ( compute, computer, computers и т. д. ), а также имена файлов и номера строк ( ключ /N ).

findstr /A:FC /N /s /i "\< правильн.*" *.* - как и в предыдущем случае, но ищется строка, содержащая слово, начинающееся с подстроки правильн. При использовании символов русского языка нужно учитывать их кодировку, поскольку коды символов в DOS- и Windows - кодировке различаются. В командных файлах, когда необходимо выполнять поиск строк, содержащих символы национального алфавита, шаблон для поиска должен быть представлен в той же кодировке, что и содержимое файла. Можно использовать переключение кодовой страницы перед поиском:

REM переключаемся на Windows - кодировку
chcp 1251
REM Выполняем поиск
findstr /A:FC /N /s /i "\< правильн.*" *.*
REM Переключаемся на DOS - кодировку
chcp 866
REM Выполняем поиск
findstr /A:FC /N /s /i "\< правильн.*" *.*










Весь список команд CMD Windows