Главная > Разное, Уголок гика > Программы для поиска из командной строки Windows 7

Программы для поиска из командной строки Windows 7

Ни для кого не секрет, что поиск Windows 7 - удобный и мощный инструмент. Его глубокая интеграция в Проводник, меню "Пуск", сохраняемые результаты и индексируемые расположения действительно позволяют экономить время, если что-то нужно быстро найти, открыть или запустить.
В недрах Windows 7 скрывается ряд консольных утилит для поиска, которые порой не менее эффективны при использовании в различных сценариях командной строки и могут сослужить вам добрую службу.

Первая программа, входящая в состав средств консольного поиска Windows 7, - find.

FIND

Программа find осуществляет поиск текстовой строки в одном или нескольких файлах. Синтаксис её таков:

find [/опции] "строка для поиска" ДИСК:\Папка\ШаблонИмениФайла*.*

Программа find отличается от графического инструментария поиска Windows 7, что может искать текст во всех типах файлов, например, в DLL или EXE. Графические средства поиска Windows 7, как известно, текст в подобных файлах не ищут.

Программа find имеет следующий перечень опций, влияющих на её поведение и возможности:

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

Программа FINDSTR

Утилита findstr выглядит функционально расширенной версией программы find. Синтаксис их схож:

findstr [/опции] "строка для поиска" ДИСК:\Папка\ШаблонИмениФайла*.*

Однако, findstr поддерживает сразу несколько шаблонов имени файлов и несколько поисковых строк, которые нужно разделять пробелами. Кроме того, findstr поддерживает работу с регулярными выражениями. Опции при работе с ней таковы:

  • /B - искать указанную строку-образец только в начале строк.
  • /E - искать указанную строку-образец только в конце строк.
  • /L - поиск строк дословно, т.е. в точном соответствии с введенной фразой
  • /R - искать указанную строку-образец с использованием регулярных выражений.
  • /S - поиск файлов в текущей папке и всех ее подкаталогах.
  • /I - поиск будет вестись без учета регистра.
  • /X - выводить строки, которые совпадают точно.
  • /V - выводить строки, не содержащие совпадений с искомыми.
  • /N - выводить номер строки, в которой найдено совпадение.
  • /M - выводить только имя файла, в котором найдено совпадение.
  • /O - выводить найденные строки через пустую строку.
  • /P - пропуск строки, содержащей непечатаемые символы.
  • /OFF[LINE] - искать в файлах с установленным атрибутом "Автономный".
  • /A:цвета - две шестнадцатеричные цифры - атрибуты цвета вида (Цвет фона)(Цвет текста). Список цветов таков:
    0 = Черный 8 = Серый
    1 = Синий 9 = Светло-синий
    2 = Зеленый A = Светло-зеленый
    3 = Голубой B = Светло-голубой
    4 = Красный C = Светло-красный
    5 = Лиловый D = Светло-лиловый
    6 = Желтый E = Светло-желтый
    7 = Белый F = Ярко-белый

    Совет: Выполните команду Color /?, чтобы узнать, как устанавливать цвета в окне команд.

  • /F:файл - Читает список файлов из заданного файла (/ для консоли).
  • /C:строка - Использует заданную строку как искомую фразу поиска.
  • /G:файл - Получение строк из заданного файла (/ для консоли).
  • /D:список_папок - Поиск в списке папок (разделяются точкой с запятой).

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

  • . - любой символ.
  • * - ноль или более вхождений предыдущего символа или класса
  • ^ - начало строки
  • $ - конец строки
  • [класс] - набор символов: любой символ из перечисленных в скобках
  • [^класс] - обратный класс символов: любой символ из НЕ перечисленных в скобках
  • [x-y] - любые символы из указанного диапазона, например [a-b]
  • \x - служебный символ х: \t - табуляция, \n - начало строки
  • \?xyz - позиция в слове: в начале слова
  • xyz\> - позиция в слове: в конце слова

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

findstr /I windows microsoft.txt

Поиск всех слов "windows" без учёта регистра в файле microsoft.txt
findstr /s /i /m "\<microsoft\>" *.txt

Построить список txt-файлов в текущем каталоге и его подкаталогах, содержащий слово "microsoft", игнорируя регистр.
findstr "Привет от штиблет" file.txt

Поиск слов "Привет", "от" и "штиблет" в файле file.txt с учётом регистра.
findstr /C:"Привет от штиблет" file.txt

Поиск фразы "Привет от штиблет" в файле file.txt с учётом регистра.

Программа WHERE

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

where Каталог:шаблон

Для случая, когда каталог не указан, поиск файлов осуществляется в текущем каталоге и в каталогах, указанных в переменной окружения PATH.

Например,

WHERE "c:\windows:*.exe"

Поиск исполняемых файлов в каталоге c:\Windows

Каталогов для поиска может быть указано несколько, для этого применяется конструкция вида:

where c:\windows;c:\windows\system32:*.txt

При этом можно использовать только один шаблон.

Параметры программы Where:

  • /R - рекурсивный поиск и отображение файлов, соответствующих указанному шаблону, начиная с указанного каталога. При использовании опции /R можно использовать несколько шаблонов, но для одного каталога. Синтаксис таков:
    where  /R c:\windows *.txt *.wav
  • /Q - интересная опция с точки зрения использования в командных файлах. При её указании утилита переходит в тихий режим, списка файлов не выводит, но устанавливает код возврата, указывающего на результат её выполнения. Считать код возврата можно из переменной окружения %ERRORLEVEL%.
    • %ERRORLEVEL%=0 - поиск успешен/файлы найдены
    • %ERRORLEVEL%=1 - ничего не найдено
    • %ERRORLEVEL%=2 - поиск завершен с ошибками

  • /F - отображение найденных файлов в кавычках.
  • /T - отображение размера, даты и времени изменения для всех найденных файлов.

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

where $path:*.exe
where $windir:*.exe
where $windir:*.exe
where $temp:*.tmp

Микрософт не рекомендует использовать рекурсивный поиск при наличии переменных окружения в командной строке where. Полагаю, из-за вероятности повторения результатов и замедления работы поиска.

Winreview.ru можно найти в Вконтакте, Facebook и Twitter. Присоединяйтесь!

Комментарии

  1. Serjio

    команда "where" в Windows XP не работает

  2. Ярослав

    @Serjio
    А тебя не смутило название статьи Поиск для Windows 7.

    Нафига сюда писать то, что не работает?

Написать комментарий