С ростом объемов дискового пространства осуществлять поиск данных на жестком диске компьютера становится все сложнее, особенно если емкость диска превышает 20 Гбайт. Это относится и к портативным компьютерам.

Настольные системы с дисками размером в 100 Гбайт и более стали обычным явлением, и отслеживать все свои файлы на таком диске очень трудно. Мне постоянно приходится отыскивать файлы, о которых я знаю, что они где-то должны быть. В первую очередь это касается архивов, установочных файлов и документов Microsoft Word.

Штатный инструмент поиска, входящий в состав Windows 2000, выполняет почти все необходимые мне функции.

Параметр Date позволяет проводить поиск по дате создания, дате модификации или последнего обращения к файлу. Параметр Type позволяет выбрать любой тип файла из зарегистрированных в системе. Этот параметр удобно использовать, если вы забыли, в каком приложении был создан файл, но помните, какой значок соответствует файлу этого типа. При использовании данного режима отображаются названия зарегистрированных типов файлов и соответствующие им значки. Параметр Size позволяет задавать диапазон длины искомого файла. Если выбрать пункт Advanced Options, появляются дополнительные возможности: поиск во всех подкаталогах (используется по умолчанию), поиск с учетом регистра символов, контекстный поиск файлов на сменных носителях.

Мне часто приходится искать текстовые файлы, содержащие какую-либо информацию. Как правило, это файлы в формате MS Word или другие текстовые файлы. В принципе, штатный механизм поиска Windows 2000 позволяет находить нужный текст внутри файлов. Но существуют также две команды, с помощью которых можно быстро выполнить такой поиск. Первая из них - команда FIND. Ее синтаксис:


FIND [/V] [/C] [/N] [/I] "строка поиска" [[диск:][путь]имя файла[ ...]]

/V – Отображаются все строки, НЕ содержащие заданной строки поиска.
/C – Отображается только количество строк, содержащих строку поиска.
/N – Отображаются номера и сами строки.
/I – при поиске игнорируется регистр символов.
“строка поиска” – Задает искомую текстовую строку.
[диск:][путь]имя файла – Задает файл (или файлы) для поиска.

Если путь явно не задан, то команда FIND осуществляет поиск по тексту, вводимому с клавиатуры, или переданному из другой команды.

Команда Find выполняется очень быстро, и ее стоит использовать для поиска простых выражений в заранее известной группе файлов. Но если требуется по всему дереву каталогов искать выражение, которое нельзя припомнить в точности, лучше использовать команду FINDSTR.


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

/B– Шаблон должен соответствовать началу строки.
/E– Шаблон должен соответствовать концу строки.
/L – Строка поиска используется буквально.
/R – Строка поиска используется как регулярное выражение.
/S – Поиск файлов в текущем каталоге и во всех подкаталогах.
/I – Поиск без учета регистра символов.
/X – Выводит строки, соответствующие критерию поиска.
/V – Выводит строки, не соответствующие критерию поиска.
/N – Выводит номера строк перед строками, соответствующими критерию поиска.
/M - Выводит только имя файла для всех файлов, соответствующих критерию поиска.
/O – Выводит величину смещения в символах перед каждой строкой, соответствующей критерию поиска.
/P – Пропускаются файлы с непечатными символами.
/F:файл – берет список файлов из заданного файла (/ - означает консоль).
/C:строка – Заданная строка используется буквально для поиска.
/G:файл – Строка для поиска берется из заданного файла (/ - означает консоль).
/D:список каталогов – Задает список каталогов, разделяемых точками с запятой.
/A:атрибут цвета – Задает атрибут цвета в виде двух шестнадцатеричных цифр (см. “color /?”).
строки – Искомая текстовая строка.
[диск:][путь]имя файла – Задает файл (или файлы) для поиска.

При поиске нескольких строк в качестве разделителя используется пробел, если только аргумент не предваряется префиксом /C. Например, команда “FINDSTR ‘hello there’ x.y” выполняет поиск строк “hello” или “there” в файле x.y. Но по команде “FINDSTR /C:‘hello there’ x.y” будет осуществляться поиск строки “hello there”.

    • КРАТКАЯ СПРАВКА ПО РЕГУЛЯРНЫМ ВЫРАЖЕНИЯМ:
      . Групповой символ: любой символ.
      * Повтор: ни одного или более повторяющихся предыдущих символов или классов.
      ^ Строковая позиция: начало строки.
      $ Строковая позиция: конец строки.
      [class] Класс символов: любой символ из заданного набора.
      [^class] Инверсный класс: любой символ, не входящий в заданный набор.
      [x-y] Диапазон: любой символ внутри заданного диапазона.
      \x Escape: Буквальное использование метасимвола x.
      \<xyz Позиция в слове: начало слова.
      xyz\> Позиция в слове: конец слова.

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

    Обычно я формирую команды поиска FINDSTR с помощью программы Notepad и сохраняю их в виде командного файла. Результаты выполнения этих команд перенаправляются в текстовый файл, который я затем анализирую. Это позволяет выполнять сложный поиск в сотнях документов Word, расположенных в большом количестве каталогов одного и того же дерева.

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


    Дэвид Черников - главный технический редактор и директор тестовой лаборатории Windows 2000 Magazine. Пишет обзоры по компьютерам и продуктам уже более 15 лет, в том числе с 1992 года и по теме Windows NT. С ним можно связаться по адресу: david@win2000mag.com.