Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
20.04.2015
Размер:
2 Mб
Скачать

3.12. Познакомимся с командой find

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

find <путь в дереве каталогов> ОПЦИИ

Первый параметр <путь в дереве каталогов> определяет, что поиск файлов осуществляется в этом каталоге и всех, подчиненных ему. Например, find / требует искать во всей файловой системе. Количество опций этой команды огромно. В рассматриваемой версии они описаны более чем на 20 страницах справочного руководства man.

Для команды find параметр -name означает, что после него указывается имя файла, которое нужно искать в файловой системе.

Дадим несколько команд find, задавая разные параметры. В первом примере ищем файлы, начинающиеся на символы .bash в каталоге /root

find /root –name “.bash*”

/root/.bash_profile

/root/.bash_logout

/root/.bashrc

/root/.bash_history

Вторая команда ищет файлы с такими же символами в имени, но в каталоге /home/asplinux

find /home/asplinux –name “.bash*”

/home/asplinux/.bash_profile

/home/asplinux/.bash_logout

/home/asplinux/.bashrc

/home/asplinux/.bash_history

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

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

find /root –name “.bash*” | wc-l

4

Еще одной опцией изучаемой команды является –type, после которой можно задать тип файла. Такие варианты команд определяют количество директорий в каталоге /root

find /root -type d

а следующая

find /home/asplinux -type f

количество обычных файлов в директории /home/asplinux.

Напомним, что основные системные файлы располагаются в директории /bin. Определим сколько всего там файлов

find /bin –name * | wc –l

110

Дадим три команды, определяющие, какое количество обыкновенных файлов, символических ссылок и директорий расположено в каталоге /bin. Ответ оформлен как комментарий

find /bin –name “*” -type f | wcl # 92

find /bin –name “*” -type l | wc –l # 17

find /bin –name “*” -type d | wc –l # 1

Еще одна опция, задаваемая команде find, позволяет искать файлы с определенным набором прав доступа к нему. Напомним, что последние определяются для трех групп пользователей: владельца, группы владельца и всех остальных пользователей. Для каждого задаются три параметра, определяющие права выполнить следующие операции r – читать, w – писать, x – исполнять или символ «–», если операция запрещена. Если пользователю файла разрешено только читать и исполнять файл, группе пользователя писать и исполнять, а всем остальным – только писать, то символьный эквивалент запишется r-x-wx-w--, двоичная запись будет такой 101 011 010, а в восьмеричной системе счисления – 532.

Параметром команды find, задающей фильтр для отбора файлов с конкретными правами доступа является –perm. Ему задается восьмеричное число, определяющее права выполнять операции. Если надо выбрать все файлы директории /dev, которым для всех пользователей разрешены все операции, надо задать

find /dev -perm 777

Задание 31.

Дайте команды

Соседние файлы в папке Операционные системы