Команда 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 можно получить при использовании ключа /? :
Кроме параметров командной строки, справка дополнена краткой сводкой по синтаксису регулярных выражений:
. — Любой символ.
* — Повтор: ноль или более вхождений предыдущего символа или класса
^ — Позиция в строке: начало строки
$ — Позиция в строке: конец строки
[класс] — Класс символов: любой единичный символ из множества
[^класс] — Обратный класс символов: любой единичный символ из дополнения
[x-y] — Диапазон: любые символы из указанного диапазона
\x — Служебный символ: символьное обозначение служебного символа x
\ — Позиция в слове: в начале слова
xyz\ > — Позиция в слове: в конце слова
За полной информацией о регулярных выражениях FINDSTR обратитесь к доступной интерактивной документации.
Примеры использования FINDSTR :
findstr /M 3 %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» ( compute, computer, computers и т. д. ), а также имена файлов и номера строк ( ключ /N ).
findstr /A:FC /N /s /i «\ — как и в предыдущем случае, но ищется строка, содержащая слово, начинающееся с подстроки правильн . При использовании символов русского языка нужно учитывать их кодировку, поскольку коды символов в DOS- и Windows — кодировке различаются. В командных файлах, когда необходимо выполнять поиск строк, содержащих символы национального алфавита, шаблон для поиска должен быть представлен в той же кодировке, что и содержимое файла. Можно использовать переключение кодовой страницы перед поиском:
REM переключаемся на Windows — кодировку
chcp 1251
REM Выполняем поиск
findstr /A:FC /N /s /i «\
Утилиты find и findstr — поиск через командную строку
В этой статье мы с вами рассмотрим утилиту findstr и find командной строки, которые позволяет производить поиск строк в текстовом документе. Поиск через командную строку можно также настроить, используя шаблоны, которые настраиваются на основе регулярных выражений, но сперва, немного лирики…
В былые времена, когда я был еще полным чайником в компьютерах, мне пришлось услышать про волшебные “виртуальные диски”. В то время размер моего винчестера составлял 2 гигабайта, и на счету был каждый байт, я каждую картинки сжимал для экономии места, зато в системе был один фильм и одна игра “Age Of Empires 2”, я ее уже раз сто проходил. Так вот, я почему то решил, что “виртуальный диск”, это дополнительная память, которая может появится из воздуха… Где то два дня пытался всячески установить через Диспетчер устройств еще один винт на 500 метров, при том, что такого оборудования в системном блоке и подавно не было…
Утилита find командная строка
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «искомые_значения» [[диск:][путь]имя_файла[ . ]]
И так, смотрим на описание ключей:
[/V] – произвести вывод всех строк, которые НЕ содержат заданной.
[/C] – выводится только общее число строк, содержащих заданную.
[/N] – Вывод номеров отображаемых строк.
[/I] – Поиск без учета регистра символов.
[/OFF[LINE]] – Не пропускать файлы с установленным атрибутом «Автономный».
«искомые_значения» – собственно, строчка, поиск которой производится из командной строки Windows
[[диск:][путь]имя_файла[ . ]] – тут мы прописываем один или несколько имен документов, в которых нужно произвести поиск через командную строку, можно использовать подстановочные знаки.
Хорошо, теперь давайте попробуем написать несколько примеров.
Создадим на диске D:\ папку TEST, в который благополучно поместим три файла с расширениями .pdf, .txt и .mf. Для начала попробуем найти слово «const» во всех документах с расширением txt:
FIND «const» D:\TEST\*.txt
На выходе мы получим следующую информацию:
———- D:TESTSEND_MAIL_DATA.VBS.TXT
соnst toMSg =»to@yandex.ru» ‘получатель
соnst fromMSg =»from@gmail.com» ‘отправитель
соnst subjMsg = «Администратор» ‘субъект
соnst sndUsr =» login» ‘логин
соnst sndPswd =»password» ‘пароль
cоnst smtpSrvr = «smtp.gmail.com» ‘почтовый сервер
———- D:TESTSEND_MAIL_TEXT.VBS.TXT
cоnst toMSg =»to@yandex.ru»
cоnst fromMSg =»from@gmail.com»
cоnst subjMsg = «Администратор»
cоnst sndUsr =» login»
сonst sndPswd =»password»
сonst smtpSrvr = «smtp.gmail.com»
Как видим, мы получили список всех тех строчек, где встречается искомое слово.
Теперь попробуем сделать поиск через командную строку слова “samsung” во всех pdf файлах:
FIND «samsung» D:\TEST\*.pdf
Слово «samsung» встречается в одном документе, но, утилита FІND найти его не смогла, стоит обратить внимание, что и стандартный поиск операционной системы Windows также ничего не нашел, видимо, Google в этом все же больше преуспел.
Теперь попробуем усложнить задачу. Дело в том, что Windows ищет фразу не только в контексте файла, но и в его свойствах. Посмотрим, будет ли утилита find командной строки Windows производить поиск из описания. Я специально, по одному из каждого типа файлов (.pdf, .txt и .mf) вставлю в описание фразу «Victoria Sanremo». И так, приступим:
FIND «Victoria Sanremo» D:\TEST\*.*
В результат выполнения команды find, командная строка ничего не нашла в свойствах документов. Кроме утилиты FІND, есть еще и CMD FINDSTR, которая обладает немного большими возможностями.
Утилита FINDSTR командная строка
Утилита CMD FINDSTR предоставляется возможность осуществить поиск текста через командную строку не только в одном файле, или группе документов заданных по шаблону, но и с возможностью загрузки готового списка. И так, прежде всего, давайте посмотрим на основной синтаксис.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл][/C:строчка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]] «искомые_значения»[[диск:][путь]имя_файла[ . ]]
/B – Данный ключ определяет поиск образца лишь в началах строчек.
/E — Данный ключ определяет поиск образца лишь в конце.
/R – Фразы и слова будут приниматься как регулярные выражения.
/S – Производит поиск файлов через командную строку в текущем каталоге и всех его подпапках.
/I – Данный ключ определяет, что поиск фразы из командной строки будет вестись без учета регистра.
/X – Производит вывод только тех строчек, которые содержат точное совпадение.
/V — Производит вывод только тех строчек, которые не содержат точного совпадения с искомой фразой.
/N — Производит вывод номера строчки (которые содержат точное совпадение) и ее содержимое.
/M — Производит вывод лишь имени документа, который содержит совпадение.
/O – Вывести список найденных строк через пустую строчку.
/P – Данный параметр определяет, что произойдет пропуск всех строк, которые содержат непечатаемые символы.
/OFF[LINE] — Не пропускает те документы, у которых установлен атрибут «Автономный».
/A:цвета – Шестнадцатеричный код цвета, для получения справки можете ввести команду «COLOR /?»
/F:файл – Производит чтение списка файлов из заданного документа.
/C:строчка – Использовать значение данного параметра как искомую фразу поиска.
/G:файл – Позволяет получить список строк из заданного документа.
/D:список_папок – Тут через точку с запятой мы можем задать список каталогов, в которых нужно произвести поиск через командную строку.
“искомые_значения” – Собственно, то, что мы ищем.
[диск:][путь]имя_файла — Задаем путь к документу (документам)
Что бы разделить между собой искомые фразы, между ними вставляется пробел, если параметр не содержит префикса /C. Например,
FINDSTR «Привет мир» data.txt
ищет «Привет» или «мир» в файле data.txt, а команда
FINDSTR /C:»Привет мир» data.txt
ищет фразу «Привет мир» в файле data.txt.
Регулярные выражения являются своеобразным бонусом, которым не то, что оболочка, но и язык программирования не всегда может похвастаться. При поиске из командной строки, регулярные выражения позволяют задавать собственные шаблоны (для справки по некоторым значениям введите в cmd findstr/? ), они также используются в сценариях сервера Windows Script Host, за это отвечает отдельный объект.
Спасибо за внимание. Автор блога Владимир Баталий
findstr findstr
Выполняет поиск шаблонов текста в файлах. Searches for patterns of text in files.
Синтаксис Syntax
Параметры Parameters
Параметр Parameter | Описание Description |
---|---|
/b /b | Соответствует шаблону текста, если он находится в начале строки. Matches the text pattern if it is at the beginning of a line. |
/e /e | Соответствует шаблону текста, если он находится в конце строки. Matches the text pattern if it is at the end of a line. |
/l /l | Обрабатывает строки поиска буквально. Processes search strings literally. |
/r /r | Обрабатывает строки поиска в виде регулярных выражений. Processes search strings as regular expressions. Это параметр по умолчанию. This is the default setting. |
/s /s | Выполняет поиск в текущем каталоге и во всех подкаталогах. Searches the current directory and all subdirectories. |
/i /i | Игнорирует регистр символов при поиске строки. Ignores the case of the characters when searching for the string. |
/x /x | Выводит строки, которые точно соответствуют друг другу. Prints lines that match exactly. |
/v /v | Выводит только те строки, которые не содержат совпадений. Prints only lines that don’t contain a match. |
/n /n | Выводит номер строки каждой соответствующей строки. Prints the line number of each line that matches. |
/m /m | Печатает только имя файла, если файл содержит совпадение. Prints only the file name if a file contains a match. |
/o /o | Выводит смещение символов перед каждой совпадающей строкой. Prints character offset before each matching line. |
/p /p | Пропускает файлы с непечатаемыми символами. Skips files with non-printable characters. |
«/OFF» [строка] /off[line] | Не пропускает файлы с установленным атрибутом offline. Does not skip files that have the offline attribute set. |
ключа /f: | Возвращает список файлов из указанного файла. Gets a file list from the specified file. |
/c: /c: | Использует указанный текст в качестве литеральной строки поиска. Uses the specified text as a literal search string. |
/g /g: | Возвращает строки поиска из указанного файла. Gets search strings from the specified file. |
/d /d: | Выполняет поиск в указанном списке каталогов. Searches the specified list of directories. Каждый каталог должен быть отделен точкой с запятой (например,;) dir1;dir2;dir3 . Each directory must be separated with a semicolon (;), for example dir1;dir2;dir3 . |
/ /a: | Задает атрибуты цвета с двумя шестнадцатеричными цифрами. Specifies color attributes with two hexadecimal digits. Введите дополнительные color /? сведения. Type color /? for additional information. |
Задает текст для поиска в файле filename. Specifies the text to search for in filename. Обязательный элемент. Required. | |
[\ :][ |
] [. ]
Комментарии Remarks
Все параметры командной строки findstr должны предшествовать строкам и именам файлов в строке команды. All findstr command-line options must precede strings and filename in the command string.
Для поиска шаблонов текста в регулярных выражениях используются как литеральные символы, так и мета-символы, а не точные строки символов. Regular expressions use both literal characters and meta-characters to find patterns of text, rather than exact strings of characters.
Литеральный символ — это символ, который не имеет особого значения в синтаксисе регулярных выражений; Вместо этого он соответствует вхождению этого символа. A literal character is a character that doesn’t have a special meaning in the regular-expression syntax; instead, it matches an occurrence of that character. Например, буквы и цифры являются литеральными символами. For example, letters and numbers are literal characters.
Мета-символ — это символ с особым значением (оператор или разделитель) в синтаксисе регулярных выражений. A meta-character is a symbol with special meaning (an operator or delimiter) in the regular-expression syntax.
Допустимые мета-символы: The accepted meta-characters are:
Мета-символ Meta-character | Значение Value |
---|---|
. | Подстановочный знак — любой символ Wildcard — Any character |
* | Повтор — ноль или более вхождений предыдущего символа или класса. Repeat — Zero or more occurrences of the previous character or class. |
^ | Начальное расположение строки — начало строки. Beginning line position — Beginning of the line. |
$ | Конечное расположение строки — конец строки. Ending line position — End of the line. |
[class] | Класс символов — любой символ в наборе. Character class — Any one character in a set. |
[^class] | Обратный класс — любой символ, не наявляющийся в наборе. Inverse class — Any one character not in a set. |
[x-y] | Range — все символы в указанном диапазоне. Range — Any characters within the specified range. |
\x | Escape -литеральное использование мета-символа. Escape — Literal use of a meta-character. |
\ | Начальное расположение слова — начало слова. Beginning word position — Beginning of the word. |
string\> | Конечное расположение слова -конец слова. Ending word position — End of the word. |
Специальные символы в синтаксисе регулярных выражений обеспечивают наибольшее энергопотребление при совместном использовании. The special characters in regular expression syntax have the most power when you use them together. Например, используйте сочетание символа-шаблона ( . ) и Repeat ( * ), чтобы соответствовать любой строке символов: .* For example, use the combination of the wildcard character ( . ) and repeat ( * ) character to match any string of characters: .*
Используйте следующее выражение как часть выражения большего размера для сопоставления любой строки, начинающейся с b , и заканчивая оператором with: b.*ing Use the following expression as part of a larger expression to match any string beginning with b and ending with ing: b.*ing
Для поиска нескольких строк в наборе файлов необходимо создать текстовый файл, содержащий каждый критерий поиска в отдельной строке. To search for multiple strings in a set of files, you must create a text file that contains each search criterion on a separate line.
Используйте пробелы для разделения нескольких строк поиска, если только аргумент не имеет префикса с параметром /c. Use spaces to separate multiple search strings unless the argument is prefixed with /c.
Примеры Examples
Для поиска Hello или в файле x. y введите: To search for hello or there in file x.y, type:
Чтобы найти Hello в файле x. y, введите: To search for hello there in file x.y, type:
Чтобы найти все вхождения слова Windows (с заглавной буквой W) в файле proposal.txt, введите: To find all occurrences of the word Windows (with an initial capital letter W) in the file proposal.txt, type:
Для поиска всех файлов в текущем каталоге и всех подкаталогах, содержащих слово Windows, независимо от регистра букв, введите: To search every file in the current directory and all subdirectories that contained the word Windows, regardless of the letter case, type:
Чтобы найти все вхождения строк, начинающихся с и, предшествует нулю или большему числу пробелов (как в цикле компьютерной программы ) и для вывода номера строки, где найдено каждое вхождение, введите: To find all occurrences of lines that begin with FOR and are preceded by zero or more spaces (as in a computer program loop), and to display the line number where each occurrence is found, type:
Чтобы получить список точных файлов, которые необходимо найти в текстовом файле, используйте условия поиска в файле stringlist.txt, чтобы найти файлы, перечисленные в filelist.txt, а затем сохраните результаты в файле Results. out, введите: To list the exact files that you want to search in a text file, use the search criteria in the file stringlist.txt, to search the files listed in filelist.txt, and then to store the results in the file results.out, type:
Чтобы получить список всех файлов, содержащих слово Computer в текущем каталоге и всех подкаталогах, не зависимо от регистра, введите: To list every file containing the word computer within the current directory and all subdirectories, regardless of case, type:
Чтобы получить список всех файлов, содержащих слово Computer, и других слов, начинающихся с «Comp» (например, «Привет» и «конкурировать»), введите: To list every file containing the word computer and any other words that begin with comp, (such as compliment and compete), type: