- 01.02.2020
- 9 251
- 0
- 04.08.2021
- 5
- 5
- 0
- Содержание статьи
- Описание
- Синтаксис
- Параметры
- Примечания
- Примеры
- Справочная информация
- Добавить комментарий
FIND — Поиск заданной строки текста в файле или нескольких файлах.
Описание
После поиска в заданных файлах команда find выведет на экран все строки из этих файлов, содержащие заданный образец.
Синтаксис
find [/v] [/c] [/n] [/i] "строка" [[диск:][путь]ИмяФайла[...]]
Параметры
Параметр | Описание |
---|---|
/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, которые содержат слова «Точилка» служит следующая команда:
find "Точилка" pencil.ad
Для поиска строки, содержащей текст, указанный в кавычках, необходимо сначала заключить в кавычки всю строку. Во-вторых, необходимо использовать двойные кавычки для каждых кавычек, содержащихся в строке. Для поиска фразы «Точилка» (именно с ковычками в файле Pencil.ad:
find ""Точилка"" pencil.ad
Если поиск требуется провести в нескольких файлах, следует использовать команду find с командой for. Для поиска файлов с расширением .bat, содержащих строку «PROMPT», можно использовать следующую команду:
for %f in (*.bat) do find "PROMPT" %f
Для поиска на жестком диске C файлов, содержащих строку «CPU» и отображения их имен используйте символ канала (|), чтобы направить результаты команды dir в команду find:
dir c: /s /b | find "CPU"
Так как команда find проводит поиск, различая строчные и заглавные буквы, а команда dir выводит результаты заглавными буквами, необходимо задать строку «CPU» заглавными буквами или использовать ключ /i в команде find.
Справочная информация
В этой статье мы с вами рассмотрим утилиту 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»
———- D:TESTSUBDOMEN_SCAN.WSF.TXT
Как видим, мы получили список всех тех строчек, где встречается искомое слово.
Теперь попробуем сделать поиск через командную строку слова “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, за это отвечает отдельный объект.
FIND — команда поиска заданной строки
Команда find осуществляет поиск заданной строки текста в файле или нескольких файлах. После поиска в заданных файлах команда find выведет на экран все строки из этих файлов, содержащие заданный образец. А для поиска по образцу в файлах используется команда FINDSTR.
find [/v] [/c] [/n] [/i] «строка» [[диск:][путь]ИмяФайла[…]]
Синтаксис и параметры команды Find
- /v — Выводит все строки, не содержащие строку, заданную параметром строка.
- /c — Подсчет строк, содержащих строку, указанную параметром строка, и отображение общего количества.
- /n — Выводит номера строк перед самими строками.
- /i — Задает поиск без различия строчных и заглавных букв.
- «строка_поиска» — Обязательный параметр. Указывает группу символов, поиск которой будет производиться. Необходимо заключить параметр строка в кавычки («строка»).
- [диск:][путь] ИмяФайла — Задает местоположение и имя файла, в котором будет производиться поиск заданной строки символов.
- /? — Отображение справки в командной строке.
Примеры команды FIND
Для вывода всех строк из файла Pencil.ad, которые содержат слова «Точилка» служит следующая команда: find «Точилка» pencil.ad
Недавно мы рассматривали поиск файлов через командную строку Windows. Сегодня поговорим о том, как найти внутри файлов нужный нам текст. Сделать это можно при помощи команды FIND.
Команда find сообщает имена файлов, в которых был найден искомый файл, и выводит строки, в которых он содержится.
Синтаксис команды find:
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «искомый_текст» [путь_к_файлу]
V — вывод всех строк, НЕ содержащих искомый текст;
C — вывод только общего числа строк, содержащих искомый текст;
N — вывод номеров строк;
I — поиск без учёта регистра символов;
OFF[LINE] — не пропускать файлы с атрибутом «автономный».
Для примера проверим все текстовые файлы в каталоге C:test на наличие слова «текст».
find c:test*.txt "текст"
Если посмотреть на скриншот ниже, то можно подумать, что ни один из файлов не содержит слова «текст». Конечно, это вполне допустимый вариант. Но есть и другое объяснение.
Дело в том, что по умолчанию текст в командной строке Windows отображается согласно кодовой странице CP866, а в файлах он в кодовой странице CP1251. Поэтому нам достаточно сменить кодовую страницу в текущем окне командной строки. О том, как это сделать, можно прочитать в статье по этой ссылке.
Теперь мы видим, что слово «текст» встречается во всех трёх файлах.
Теперь посмотрим на строки, в которых нет слова «текст»:
find /v c:test*.txt "текст"
Такие оказались только в файле FILE_1.TXT.
Помните, что команда find по умолчанию учитывает регистр. Поэтому, написав в ней «Текст», мы не найдём подобного слова в файлах. Но регистр можно и проигнорировать:
find /i c:test*.txt "Текст"
На скриншоте ниже хорошо видно, что сперва команда не нашла слова «Текст» в файлах, так как в них оно записано без заглавных букв. Добавив /i, мы это исправили.
Допустим, нам нужно знать порядковые номера строк, в которых отсутствует слово «текст»:
find /v /n c:test*.txt "текст"
Если мы захотим знать число строк, в которых присутствует искомое слово, тогда выполним команду:
find /c c:test*.txt "текст"
А если нам нужно знать число строк, где это слово отсутствует, тогда пример команды такой:
find /v /c c:test*.txt "текст"
Хотя до этого в примерах мы искали отдельное слово, find спокойно ищет и выражения:
Особенностью команды find является то, что искомый текст обязательно нужно заключать в кавычки. Это приводит к трудностям, если в пути к файлам (и в именах файлов) содержится пробел. В таком случае нужно воспользоваться перенаправлением ввода, но только если мы ищем в конкретном файле.
find "строка" < "c:test testfile_1.txt"
Как видите, наличие пробела в имени каталога C:test test не помешало осуществить поиск. Но это что касается поиска в файле file_1.txt. А вот попытка поискать сразу во всех файлах привела к ошибке.
В таком случае можно воспользоваться циклическое обработкой, к примеру, командой for:
for %a in ("c:test test") do find %a*.txt "текст"
Помните, что в этом случае в командной строке нужно использовать конструкции вида %a, а в файлах .bat и .cmd вида %%a.
До этого в примерах мы всегда указывали в каких файлах искать. Если этого не сделать, то команда find выполняет поиск в тексте консоли или в тексте, который был передан по конвейеру другой командой.
Для следующего примера вернём кодовую страницу CP866. После этого отсортируем вывод команды ipconfig /all — оставим только те строки, где содержится слово «Состояние»:
ipconfig /all | find "Состояние"
Здесь мы лишь пробежались по вершинам, но возможности команды find гораздо больше. Особенно, если использовать её в комплексе с другими командами.
Most of the users who use Linux are very comfortable with using command-line. And one of the basic requirement is to find specific strings within specific file or files or even from the output of a particular command. Grep is a command-line option used to find a specific string from inside a file or multiple files or from an output of a command but it can be used only in Linux. For Windows, the grep alternative is findstr.
Since Windows users are not used to use command-line for smaller things, most of the users don’t know how to find a specific string in files using Windows command-line or even PowerShell. In this article, we will discuss about how to use findstr (equivalent of Grep in Windows) in command prompt and also how to use the find function using PowerShell. Let’s discuss about different scenarios which can be used in real-world situations.
Table of contents
- Filter an output of a command Using Command Prompt
- Search for a specific string inside a single file Using Command Prompt
- Search for a specific string in a folder using Findstr
Filter an output of a command Using Command Prompt
If you want to filter the results of a command, you can use | findstr “string_to_find”
For example, I mostly use netstat for checking the connections being made on my computer. If I want to check which app or IP address is connected to a specific port, I’ll use the following command:
netstat | findstr “imaps”
This will show me only secure imap ports opened on my computer.
Search for a specific string inside a single file Using Command Prompt
The command for this purpose is:
findstr “string_to_find” “file_name”
For example,
findstr “reader” “new 1.txt”
You can also give full path of the file if it’s not in the same directory as opened in command prompt.
Search for a specific string in a folder using Findstr
You can also specify a folder for finding a specific text string in multiple files.
findstr /M “reader” “C:UsersUsmanDesktop*”
This will give a list of all files with full path containing the text string “reader”. If you don’t specify /M, the output will show the exact text string along with the file name where it found the string.
You can go through all the switches you can use with the command here.
This command can be useful in many cases especially when I am creating a log of network activities and have to find a specific thing from the log. What do you do with this filter command “findstr”?
Also see:
Usman Khurshid is a seasoned IT Pro with over 15 years of experience in the IT industry. He has experience in everything from IT support, helpdesk, sysadmin, network admin, and cloud computing. He is also certified in Microsoft Technologies (MCTS and MCSA) and also Cisco Certified Professional in Routing and Switching.