Читаем Linux и UNIX: программирование в shell. Руководство разработчика полностью

В результате будет получен файл, дата создания которого — 4 мая, время создания —21:40 (предполагается, что текущее время — 23:40). Теперь можно применить

команду find с опцией -newer для нахождения всех файлов, которые обновлялись в течение последних двух часов:

$ find . — newer dstamp -print

2.1.8. Опция -type

Операционные системы UNIX и Linux поддерживают различные типы файлов (см. главу 1). Поиск файлов нужного типа осуществляется посредством команды, find с опцией -type. Например, для нахождения всех подкаталогов в каталоге /etc воспользуйтесь такой командой:

$ find /etc -type d -print

Чтобы получить список всех файлов, но не каталогов, выполните следующую команду:

$ find . ! — type d -print

Ниже приведена команда, которая предназначена для поиска всех символических ссылок в каталоге /etc.

$ find /etc -type l -print

2.1.9. Опция -size

В процессе поиска размер файла указывается с помощью опции -size n, где N -pазмер файла в блоках по 512 байтов. Возможные аргументы имеют следующие значения:

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

— N — меньше заданного,

N -pавен заданному.

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

Для поиска файлов, размер которых превышает 1 Мб, предназначена команда

$ find . — size +1000k -print

Следующая команда выполняет поиск в каталоге /home/apache файлов, размер которых в точности равен 100 байтам:

$ find /home/apache -size 100c -print

Произвести поиск файлов, размер которых превышает 10 блоков (5120 байтов), позволяет приведенная ниже команда:

$ find . — size +10 -print

2.1.10. Опция -depth

Опция -depth позволяет организовать поиск таким образом, что сначала проверяются все файлы текущего каталога (и рекурсивно все его подкаталоги) и только в конце — запись самого каталога. Эта опция широко применяется при создании списка файлов, помещаемых в архив на магнитной ленте с помощью команды cpio или tar, так как в этом случае сначала записывается на ленту образ каталога и лишь после этого задаются права доступа к нему. Это позволяет пользователю архивировать те каталоги, для которых у него нет разрешения на запись.

Следующая команда выводит список всех файлов и подкаталогов текущего каталога:

$ find . — name "*" — print -о -name ".*" — print -depth

Вот как могут выглядеть результаты ее работы:

./.Xdefaults

./.bash_logout

./.bash_proflie

./.bashrc

./.bash_history

./file

./Dir/file1

./Dir/file2

./Dir/file3

./Dir/Subdir/file4

./Dir/Subdir

./Dir

2.1.11. Опция -mount

Поиск файлов только в текущей файловой системе, исключая другие смонтированные файловые системы, обеспечивает опция -mount команды find . В следующем примере осуществляется поиск всех файлов с расширением хс в текущем разделе диска:

$ find / -name "*.XC" — mount -print

2.1.12. Поиск файлов с последующей архивацией командой cpio

Команда cpio применяется главным образом для записи файлов на магнитную ленту и чтения их с ленты. Очень часто она используется совместно с командой find, по каналу принимая от нее список файлов.

Вот как выполняется запись на магнитную ленту содержимого каталогов /etc, /home и /apps:

$ cd /

$ find etc home apps -depth -print | cpio -ov > dev/rmt0

Опция -o команды cpio задает режим записи файлов на ленту. Опция -v (verbose -cловесный режим) является указанием команде cpio сообщать о каждом обрабатываемом файле.

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

2.1.13. Опции -exec и -ok

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

ls -l). Многие пользователи применяют опцию -exec для нахождения старых файлов, подлежащих удалению. Я рекомендую вместо команды rm выполнить сначала команду ls, чтобы убедиться в том, что команда find нашла именно те файлы, которые нужно удалить.

После опции -exec следует указать выполняемую команду, а затем ввести фигурные скобки, пробел, обратную косую черту и, наконец, точку с запятой. Рассмотрим пример:

$ find . — type f -exec ls -1 {} \;

-rwxr-xr-x

10

root

wheel

1222

Jan 4 1993

./sbin/C80

-rwxr-xr-x

10

root

wheel

1222

Jan 4 1993

./sbin/Normal

-rwxr-xr-x

10

root

wheel

1222

Jan 4 1993

./sbin/Revvid

Здесь выполняется поиск обычных файлов, список которых отображается на экране с помощью команды ls -l.

Чтобы найти файлы, которые не обновлялись в каталоге /logs в течение последних пяти дней, и удалить их, выполните следующую команду:

$ find /logs -type f -mtime +5 -exec rm {} \;

Перейти на страницу:

Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии