Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО - Лабораторные работы.doc
Скачиваний:
22
Добавлен:
10.11.2019
Размер:
752.13 Кб
Скачать

Лабораторная работа №6. Организация поиска

Цель работы: ознакомиться с составлением шаблонов и работой команды поиска файлов find.

Необходимые сведения

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

Метасимвол

(диапазон)

Описание

Пример

*

Произвольная (в том числе и пустая) строка. Действует до первой точки

~/Part* — файлы Part, Part1, Part01, Part_Two, но не Part.txt или Part_Two.html

?

Любой одиночный символ

Glava?? — файлы Glava03 и GlavaXZ, но не Glava и не Glava.old

[nМх] или [n,М,х]

Любой символ из перечисленных в скобках

Glava0[3,8] — файлы Glava03 и Glava08;

Glava?[3,8] — файлы Glava03, GlavaZ8, Glava18, Glava23

[a-zA-Z0-9] или

[a-z,A-Z,0-9]

Любой символ из указанных интервалов

Glava0[2-4,9] — Glava02, Glava03, Glava04, Glava09

[!а-n,х,у]

Любой символ, не указанный в скобках

Glava[!0][0-9] — все главы, начиная с 11

В соответствии со стандартом POSIX (Portable Operating System Interface for Unix, переносимый интерфейс операционных систем Unix) при указании шаблонов в командах управления файлами и каталогами можно использовать предопределенные диапазоны или классы символов.

Класс

Описание диапазона символов

[:upper:]

[A-Z]

[:lower:]

[a-z]

[:digit:]

[0-9]

[:alpha:]

[a-zA-Z]

[:alnum:]

[0-9a-zA-Z]

[:punct:]

Набор символов

! # $ % & ^ ? @ ' " ` * + - = _ ~ ( ). , : ; / \ | < > [ ] { }

[:space:]

Набор символов: табуляция, вертикальная табуляция, символ новой строки, символ новой страницы, символ возвращения каретки, пробел

[:graph:]

Одновременно [:alnum:] и [:punct:]

[:print:]

Одновременно [:alnum:], [:punct:] и пробел

Использование классов имеет следующие особенности:

  • так как классы представляют собой перечисления, то при использовании их заключают в дополнительные квадратные скобки. Например, указание ?[[:digit:]]? позволяет обратиться к файлам с именами из трех символов, вторым из которых является число;

  • классы могут учитывать как символы английского алфавита, так и национального языка.

Описание команды find

find [путь] [выражение] — осуществляет поиск в файловом дереве, начиная с каталога путь по критериям, указанным в выражении. Параметр выражение может иметь вид:

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

-name шаблон — поиск файлов по шаблону имени. Шаблон должен быть заключен в двойные кавычки;

-regex шаблон — поиск файлов по регулярному выражению. Фактически полный путь к файлу сравнивается с регулярным выражением ^шаблон$;

-perm режим — поиск файлов с заданным режимом доступа. Задание режима аналогично абсолютному режиму команды chmod;

-user пользователь — поиск файлов, принадлежащих указанному пользователю;

-group группа — поиск файлов, принадлежащих указанной группе пользователей;

-mtime [+-]n — поиск файлов, модификация которых осуществлялась ровно n дней назад (если + или - не указаны), не осуществлялась в течении n дней (если указан -), или файлы, которые были модифицированы в течении последних n дней (если указан +);

-atime [+-]n — аналогично предыдущему, но поиск производится по последнему времени доступа;

-newer файл — поиск файлов, созданных позднее, чем указанный файл. Для создания файла с определенной датой и временем используется команда

touch –t дата файл,

где дата описывается в формате ММДДччмм (месяц-день-часы-минуты);

-type тип — поиск файлов заданного типа (f, d, c, b, p, l, s);

-size [+-]N[ckMG] — поиск файлов заданного размера N (в блоках, 1 блок=512 байт). При указании + производится поиск файлов больше заданного размера, при указании - меньше заданного. Если после N указан один из символов c, k, M, G, то размер измеряется в байтах, килобайтах, мегабайтах и гигабайтах соответственно.

Для задания сложных критериев с применяют логические операции:

! выражение — отрицание выражения;

выражение1 выражение2 — конъюнкция. Так же можно использовать конструкцию выражение1 –a выражение2;

выражение1 –o выражение2 — дизъюнкция.

Если задается сложный критерий поиска, то возможно использовать скобки, записываемые как последовательность «пробел, обратный слэш, скобка, пробел», например,

find ~ –size +1M \( -name "*.gz" –o –name "*.zip" \)

Эта команда ищет в домашнем каталоге пользователя файлы, размер которых больше мегабайта с расширением gz или zip.

Ход работы

  1. Запустите оболочку Midnight Commander и выполните следующие действия:

  • используя инструмент поиска, найдите в каталоге /usr/share/doc/ все файлы, имеющие расширение html;

  • определите, сколько файлов в каталоге /bin имеют имена, состоящие из трех символов;

  • в домашнем каталоге осуществите поиск файлов, имена которых содержат один из символов a,b,c,d,e;

  • используя классы, найдите файлы с произвольным расширением, имена которых состоят ровно из двух букв в верхнем регистре.

Завершите работу с файловой оболочкой.

  1. Проверьте последовательно существование файлов HOSTNAME и crontab в каталоге /etc.

  2. Осуществите в каталоге /dev поиск всех файлов, имена которых начинаются на tt, используя шаблоны имен файлов.

  3. Используя шаблоны, осуществите в каталоге /etc поиск всех файлов, имена которых состоят не менее, чем из 5 символов и второй символ находится в диапазоне от a до q.

  4. Осуществите в каталоге /usr/bin поиск всех файлов, имена которых начинаются на au с выводом информации в файл au.txt, находящийся в домашнем каталоге. Просмотрите содержимое файла au.txt.

  5. Осуществите в каталоге /usr поиск каталогов, имена которых начинаются на li.

  6. Определите права доступа каталога mode и осуществите в домашнем каталоге поиск каталогов, которые имеют права доступа, аналогичные каталогу mode.

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

  8. В домашнем каталоге осуществите поиск файлов, которые были созданы в течение последних 10 дней.

  9. В домашнем каталоге осуществите поиск файлов, которые были созданы позднее 10 дней назад, но ранее 6 дней назад.

  10. Осуществите в каталоге /usr/lib поиск всех файлов, размер которых более 1 Мб, но менее 2 Мб.

  11. В домашнем каталоге осуществите поиск всех символических ссылок.