Утилита File Find (FILEFIND)

8.7.3. Утилита File Find (FILEFIND)

FILEFIND является мощной утилитой, существенно облегчающей работу с файлами, которые размещены в различных узлах разветвленного дерева каталогов. Она выполняет следующие функции:

1) поиск файлов в заданном фрагменте файловой структуры или сразу в нескольких файловых структурах на различных дисках по имени и расширению, по содержимому, по дате и времени создания, по размеру, по наличию тех или иных атрибутов, а также по любой комбинации перечисленных критериев, объединяемых по «И»;

2) отображение списка найденных файлов различными способами;

3) визуализацию содержимого найденных файлов;

4) переход в каталог, содержащий любой из найденных файлов;

5) смену атрибутов как одновременно у всех найденных файлов, так и у отдельно взятого файла из этого списка;

6) установку даты и времени создания как одновременно у всех найденных файлов, так и у отдельно взятого файла из этого списка;

7) печать списка найденных файлов;

8) генерацию командного файла, обеспечивающего требуемую обработку каждого файла из списка найденных файлов;

9) определение достаточности размера свободного дискового пространства для размещения всех файлов из этого списка.

Такой набор функций пользовательский интерфейс DOS не поддерживает. Только лишь малую долю перечисленных работ могут выполнить DOS-команды DIR и ATTRIB.

FILEFIND гораздо мощнее функционально аналогичной команды оболочки Norton Commander, так как дополнительно обеспечивает поиск файлов по множеству критериев (причем на различных дисках), а также выполнение групповых операций над списком найденных файлов. Тем не менее утилита не поддерживает накопление результатов нескольких операций поиска.

Чаще всего FILEFIND используется в диалоговом режиме, хотя допустим и недиалоговый.

Утилита запускается командной строкой вида

FILEFIND [mask] [string] [переключатели]

Аргумент mask определяет шаблон составного имени файла для поиска файлов по составному имени. Правила записи и интерпретации шаблонов в данной утилите отличаются от соглашений, используемых в DOS. Поэтому мы применили обозначение mask вместо pattern, а в дальнейшем шаблон такого типа будем называть маской.

В маске, как и в шаблоне, можно использовать символы-заменители * и ?. Однако они допустимы и в поле привода. Еще одно отличие состоит в том, что отсутствие маршрута обозначает не текущий каталог, а весь диск без каких-либо ограничений видимости файлов, накладываемых структурой каталога. Поэтому каталог при необходимости следует специфицировать явно. И наконец, допу­скается сокращение вида * вместо *.* (аналогично DOS-команде DIR). Таким образом, маска по сравнению с шаблоном обладает большей общностью. Типичными примерами масок являются:

*.*                   — все файлы на текущем диске;

.\*.*                 — все файлы, содержащиеся в текущем каталоге;

*:*.*                — все файлы на всех установленных дисках.

Аргументом string можно задать поиск файлов по содержимому, а именно, тех файлов из сопоставимых с маской, которые содержат последовательность символов (строку) string. Если искомая строка содержит хотя бы один пробел, то ее следует заключить в кавычки ("). Если же строка содержит именно такие символы, то необходимо ограничить ее слева и справа апострофом (').

Переключатели задают режимы работы утилиты и дополнительные критерии поиска. Допу­стимы следующие переключатели:

/S                                — включить в область поиска не только файлы из заданного каталога, но и файлы, содержащиеся во всех подчиненных ему каталогах;

                               — искать файлы только в текущем каталоге, даже если указана маска *.*;

/CS                              — осуществить чувствительный к регистру поиск (одноименные прописные и строчные буквы не будут считаться совпадающими). Иначе будет произведен независящий от регистра поиск. Для букв русского алфавита, если последний не поддерживается стандартной кодовой страницей, поиск всегда будет про­ходить в режиме /CS;

/А{+ |—}                    — установить (+) или сбросить (—) атрибут А у всех найденных файлов;

/R{+ |—}                    — установить (+) или сбросить (—) атрибут R у всех найденных файлов;

ID{+ |—}               — установить ( + ) или сбросить (—) атрибут Н у всех найденных файлов;

/SYS{+ |—}               — установить (+) или сбросить (—) атрибут S у всех найденных файлов; /CLEAR                         — сбросить все атрибуты у всех найденных файлов;

/D[:date]                   установить дату создания date для всех найденных файлов, а по умолчанию использовать текущую дату. Дата задается в формате ММ-ДД-ГГ;

/T[:time]                      — установить время создания time для всех найденных файлов (по умолчанию использовать текущее время). Время задается в формате ЧЧ:ММ:СС;,

/NOW                         — установить дату и время создания для всех найденных файлов по текущим показаниям системных часов (данный переключатель эквивалентен паре пере­ключателей /D и /Т);

/TARGET:d                — проверить, поместятся ли все найденные файлы на диске в приводе d;

 /O:fi                      сохранить список найденных файлов в текстовом файле file;

/BATCH                     — обеспечить недиалоговый режим работы утилиты.

Недиалоговый режим работы устанавливается тогда и только тогда, когда одновременно заданы как переключатель /BATCH, так и аргумент mask. В противном случае утилита входит в диалоговый режим работы, а аргументы и переключатели, заданные в командной строке, служат лишь для сокращения пространства диалога.

Подчеркнем еще раз, что все критерий поиска файлов объединяются по «И», т.е. служат в качестве дополнительных ограничителей. Кроме того, все критерии, за исключением mask, могут быть пропущены. Маску же требуется задавать всегда (конечно, не обязательно в командной строке). При желании не использовать критерий поиска, определяемый маской, нужно специ­фицировать наиболее общую маску, а именно, *:*.*.

Поиск по содержимому особенно полезен в том случае, если файлы текстовые, Вы помните ключевые слова в них, но забыли их имена. Совпадение в процессе поиска будет выявлено даже. Тогда, когда указанные в string слова реально разделены в файле маркерами EOL.

Главный экран утилиты, запущенной в диалоговом режиме, показан на рис. 8.110. Многие действия могут быть выполнены в нем без помощи команд имеющегося меню.

 

 

Рис.  8.110.  Главный  экран утилиты  FILEFIND

 

Главный экран содержит:

1) текстовую область маски файлов (File Name);

2) текстовую область искомой строки (Containing);

3) безымянную область для установки сферы действия операции поиска;

4) область с единственной опцией Ignore case;

5) область подкоманд;

6) область списка найденных файлов.

В области File Name нужно задать маску для поиска файлов по имени. В области Containing можно указать строку для поиска файлов по содержимому. В качестве сферы действия операции поиска можно выбрать один из следующих вариантов, определяющих пространство поиска файлов:

Entire disk                                          — все каталоги текущего (или специально заданного) диска;

Current directory and below             — рабочий каталог и все подчиненные ему каталоги;

Current directory only                       только рабочий каталог.

При включении опции Ignore case различия между одноименными прописными и строчными буквами при поиске по содержимому будут игнорироваться.

В области подкоманд имеются (и могут появиться) приведенные ниже подкоманды:

Start                            — начать поиск;

View                           — отобразить содержимое файла, помаркированного в списке найденных файлов;

Go То                         — завершить выполнение утилиты и сделать рабочим каталог, содержащий помаркированный в списке найденных файлов файл, или немаркированный в этом списке каталог,

Stop                            — прекратить поиск (это же можно сделать путем нажатия клавиши Esc). Данная подкоманда появляется вместо подкоманды Start после запуска операции поиска. Выдача Stop не аннулирует уже накопленные результаты поиска.

В области списка найденных файлов перечисляются, все файлы, обнаруженные в ходе текущей или последней операции из завершившихся операций поиска. Обычно в этой области наряду с составными именами файлов отображаются:

— спецификации каталогов, в которых файлы найдены, с соответствующей разноской (сначала дается спецификация каталога, а за ней перечисляются найденные в каталоге файлы);

— размеры файлов;

— даты создания файлов;

— времена создания файлов;

— атрибуты файлов (символами АД Н и S);

— число вхождений искомой строки в файлы.

Содержимое области списка найденных файлов, когда она активна, можно прокручивать и маркировать один из ее элементов даже в ходе операции поиска. К помаркированному элементу применимы подкоманды View и Go То. При выдаче View до завершения операции поиска последний переводится в фоновый режим, но не прекращается, что ускоряет работу в среде утилиты.

Под областью списка найденных файлов указывается спецификация рабочего каталога, а левее этих сведений — общее количество найденных файлов.

Для поиска файлов по имени нужно в главном экране утилиты выполнить следующие действия:

1) задать маску для поиска;

2) возможно, конкретизировать сферу действия операции поиска выбором подходящего варианта;

3) нажать комбинацию клавиш Alt-D и установить в открывшемся окне опцию All drives, если требуется осуществить поиск на всех установленных дисках и это в маске не отражено; выбор приводов будет описан ниже более детально;

4) выдать подкоманду Start, нажав клавишу Enter.

Чтобы найти файлы по содержимому, до выдачи Start дополнительно требуется:

1) указать искомую строку;

2) включить или отключить опцию Ignore case (обычно ее включают). Маска при этом играет роль ограничителя сферы действия операции поиска.

О том, как задаются другие критерии поиска, речь пойдет при рассмотрении команд меню.

Меню утилиты содержит следующие пункты:

File                  — для выбора привода и каталога, где требуется произвести поиск файлов, т.е.

рабочего каталога;

Search              — для задания дополнительных критериев поиска и расширения сферы действия этой операции;

List                 — для установки способа визуализации списка найденных файлов и выполнения некоторых действий над ним;

Commands     — для выполнения ряда действий со списком найденных файлов;

Viewer            — для выполнения команд визуализатора;

Quit!               — для выхода из утилиты.

Все пункты, за исключением последнего, разворачиваются в случае их выбора в соответст­вующие подменю, команды которых мы сейчас и рассмотрим.

Предварительно отметим, что все установки, за исключением выполненных по команде Search Drives, действуют только в данном сеансе работы утилиты и для последующего использования сохранены быть не могут.

 

Подменю File

Данное подменю содержит команды Drive и diRectory.

Команда Drive (оперативный вариант — Ctrl-D) служит для указания привода, на диске в котором требуется осуществить поиск файлов. Если маской в главном экране задан другой привод, то поиск будет осуществляться на последнем. В случае выдачи команды открывается диалоговое окно, где нужно помаркировать привод в имеющемся списке и выдать подкоманду ОК.

Команда dlRectory (оперативный вариант — Ctrl-R) обеспечивает смену текущего привода и текущего каталога на нем с целью указания новой сферы действия операции поиска. Если маской в главном экране задан другой дисковод, то поиск будет осуществляться в соответствии с маской. При выдаче команды открывается диалоговое окно, в котором легко можно выполнить переустановки одним из двух, способов:

1) путем задания полной спецификации рабочего каталога в текстовой области Current Directory;

2) путем выбора привода и перехода в подкаталог в областях Drives и Sub-Directories соответственно.

Чтобы завершить переустановку, нужно выдать подкоманду ОК

Вторая команда является обобщением первой, но ее труднее задавать.

 

Подменю Search

Это подменю включает команды Search drives и Advanced search.

Команда Search drives (оперативный вариант — Alt-D) обеспечивает распространение операции поиска на любую комбинацию приводов. При выдаче данной команды открывается диалоговое окно, показанное на рис. 8.111. В нем можно специфицировать один из следующих вариантов:

Default drive                          — текущий привод;

All drives                               — все приводы;

The following drives              — следующие приводы (которые перечисляются ниже).

 

 

Рис. 8.111. Диалоговое окно Drives To Search

 

В последнем случае нужно указать приводы в имеющемся списке явно (клавишей Space).

Затем следует выдать подкоманду Save для сохранения изменений в файле NORTON.INI с целью их использования как в данном, так и в последующих сеансах работы утилиты, или подкоманду ОК для использования установок только в текущем сеансе работы.

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

Команда Advanced search, (оперативный вариант — F4) служит для задания дополнительных критериев поиска с целью его сужения. В случае выбора команды открывается диалоговое окно, представленное на рис. 8.112. В данном окне можно указать:

1)         режим поиска файлов, созданных позже заданного момента времени (для этого нужно напечатать дату и время вслед за заголовком Date is after в формате

ММ-ДД-ГГ [ЧЧ:ММ [АМ | РМ]]

2) режим поиска файлов, созданных раньше заданного момента времени (с этой целью следует напечатать дату и время вслед за заголовком Date is before);

3) режим поиска файлов, размер которых больше числа, заданного вслед за заголовком Size is greater than (оно специфицируется в байтах и, возможно, завершается буквой К или М);

4) режим поиска файлов, размер которых меньше числа, заданного вслед за заголовком Size is less than;

5) режим поиска файлов, принадлежащих владельцу, напечатанному за заголовком Owner is (используется только для сетевых приводов);

6) режим поиска файлов, имеющих определенные атрибуты, включив соответствующие опции (Hidden — для Н, Read-only — для R, System — для S и Archive — для А).

Все перечисленные режимы поиска допускается комбинировать.

Дополнительно в этом же окне можно включить опцию Include Directories, в результате чего имена каталогов, содержащих найденные файлы, будут помещены в список на главном экране. Это позволит впоследствии выполнить над ними те же действия, что и над файлами (например, переустановить атрибуты).

После спецификации режимов поиска и опций следует выдать подкоманду ОК Имеющаяся подкоманда Clear All позволяет быстро отменить все сделанные здесь установки.

 

 

Рис.  8.112. Диалоговое  окно  Advanced  Search

 

Если изменения в окне Advanced Search сделаны, то на главном экране появится запись Advanced Search is ON.

 

Подменю List

Подменю List содержит команды Set list display, Print list и Create batch.

Команда Set list display (оперативный вариант — Ctrl-F) обеспечивает сортировку списка найденных файлов и устанавливает объем отображаемой справочной информации о них. При выборе данной команды открывается диалоговое окно, показанное на рис. 8.113. В области List Format можно задать один из следующих вариантов объема показываемых справочных сведений о найденных файлах:

Name, Size, Date and Attributes       — составное имя, размер, дата и время создания, а также атрибуты;

Name and Date/Time                         — составное имя, а также дата и время создания;

Name and Size                                   — составное имя и размер;

Name and Attributes                         — составное имя и атрибуты;

Name                                                 — только составное имя.

 

 

Рис. 8.113. Диалоговое  окно List Display

 

В области Sort Criterion можно указать один из следующих критериев сортировки списка найденных файлов:

Unsorted                    — не сортировать;

Name                          — сортировать по имени;

Extension                   — сортировать по расширению;

Date & Time               — сортировать по дате и времени создания;

Size                             — сортировать по размеру.

Независимо от этого сортировка будет ограничиваться файлами, содержащимися в одном и том же каталоге.

В области Sort Order специфицируется один из следующих способов сортировки:

Ascending                               — в порядке возрастания;

Descending                 — в порядке убывания.

Критерий, а также способ сортировки действует и на следующую команду. После выполнения установок выдайте подкоманду ОК.

Команда Print list (оперативный вариант — Ctrl-P) служит для печати списка найденных файлов или записи его в заданный текстовый файл. В случае выдачи этой команды открывается диалоговое окно, представленное на рис. 8.114.

 

 

Рис.  8.114. Диалоговое  окно  Print  List

 

В области Save the list to задается адресат списка найденных файлов — принтер (Printer) или файл (File). Во втором случае следует указать его спецификацию, если предложенная по умолчанию по каким-либо причинам не подходит.

В области Print List Format выбирается объем выводимой справочной информации о файлах (аналогично предыдущей команде).

Дополнительно к этому можно включить опции:

Print text search occurences per file                          — печатать число вхождений искомой строки в каждый файл;

Print directory totals                                      — печатать итог по каждому каталогу;

Print totals for entire list                                           — печатать общий итог по всем найденным файлам.

После этого следует выдать подкоманду ОК.

Команда Create batch (оперативный вариант — Ctrl-B) предоставляет Вам уникальную воз­можность по формированию командного файла, который выполняет заданную операцию над каждым файлом из списка найденных файлов. Это весьма мощное средство по управлению файлами. В частности, можно сгенерировать командный файл, удаляющий все найденные файлы или копирующий их в определенное место и т.п.

При выборе команды Create batch открывается диалоговое окно, представленное на рис. 8.115.

В нем следует специфицировать командный файл (Save the list to), если предложенное имя по каким-либо причинам не подходит. Затем можно включить следующие опции:

Save full path                         — сохранить в командном файле полные маршруты (включая приводы)

найденных файлов, т.е. вместо только составных имен файлов исполь­зовать их полные спецификации;

Directory title line                  — включить в командный файл не только спецификации всех найденных файлов, но и спецификации содержащих их каталогов.

После этого в области Text to put before names нужно напечатать имя DOS-команды или программы, которой требуется обработать каждый найденный файл, а также предшествующие файлу аргументы.

Область Text to put after file names остается пустой, либо в ней указываются дополнительные аргументы и/или переключатели командной строки, которые следует разместить вслед за спе­цификациями файлов в строках командного файла.

Для каждого найденного файла file строка командного файла будет иметь вид

t_b file t_a

 

 

Рис.  8.115. Диалоговое  окно  Create  Batch  File

 

где t_b             содержимое области Text to put before names;

t_a                    содержимое области Text to put after file names.

В область Text to put before directory lines обычно заносят строку @REM, которая помещается в командном файле перед всеми каталогами (если они включаются в командный файл), запрещая их обработку.

После выполнения описанных действий следует выдать подкоманду ОК.

Если нужно выполнить над каждым файлом более одной операции, можно самостоятельно создать командный файл с одним параметром, описывающий требуемую последовательность действий, а в область Text to put before file names поместить строку CALL name, где name — имя этого командного файла

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

 

Подменю Commands

В данное подменю входят команды set Attributes, set Date/Time и Target fit.

Команда set Attributes служит для переустановки атрибутов единственного помаркированного на главном экране найденного файла или всех найденных файлов. При выборе этой команды открывается диалоговое окно, показанное на рис. 8.116.

 

 

Рис.  8.116. Диалоговое  окно  Change  attributes

 

В области Set Attributes следует уточнить, что именно Вы хотите сделать — сменить атрибуты единственного помаркированного файла, спецификация которого здесь отображается, или пере­установить атрибуты всех найденных файлов (for entire file list).

Затем нужно в колонке Set специфицировать те атрибуты, которые Вы желаете установить, а в колонке Clear — те атрибуты, которые требуется сбросить.

После этого выдается подкоманда ОК.

Команда set Date/Time обеспечивает установку даты и времени создания единственного помаркированного на главном экране файла или всех найденных файлов. Это полезно, например, при подготовке дистрибутива коммерческой версии программного продукта. После выдачи ко­манды открывается диалоговое окно, представленное на рис. 8.117.

 

Рис.  8.117. Диалоговое  окно  Set  Date/Time

 

В этом окне, как и в предыдущем, сначала нужно уточнить свои потребности в области Set Attributes. Затем можно включить следующие опции, после чего напечатать дату и/или время:

Set the time to            — установить время создания;

Set the date to            — установить дату создания.

В качестве значений по умолчанию предлагаются текущие значения даты и времени.

Команда Target fit служит для определения возможности размещения всех найденных файлов в заданном установленном диске. В ходе этой операции учитывается длина каждого файла, а также принимается во внимание тот факт, что дисковая память под файлы выделяется целыми кластерами. Поэтому, как правило, для размещения файлов требуется больше памяти, чем их суммарная длина. После выбора команды открывается диалоговое окно Target Fit. В нем нужно указать привод, на котором установлен целевой диск. Результаты проверки будут показаны на экране дисплея.

 

Подменю Viewer

В подменю Viewer содержатся команды Previous match, Next match, pRevious file и nExt file.

Все эти команды доступны только при использовании визуализатора для просмотра содержимого помаркированного на главном экране одного из найденных файлов (подко­манда View).

В зависимости от типа файла автоматически выбирается текстовый или шестнадцатеричный визуализатор. Если использовался поиск по содержимому файла, то первое вхождение искомой строки в файл отмечается маркером.

Команда Previous match (оперативный вариант — F5) служит для поиска предыдущего вхож­дения искомой строки в отображаемый файл, если последняя была задана.

Команда Next match (оперативный вариант — F6) обеспечивает поиск следующего вхождения искомой строки в отображаемый файл, если эта строка была задана.

В случае, когда искомая строка не задавалась, команды Previous match и Next match недоступны.

Команда pRevious file (оперативный вариант — F7) предназначена для отображения содер­жимого предыдущего из найденных файлов.

Команда nExt file (оперативный вариант — F8) используется для отображения содержимого следующего из найденных файлов.