| Сервер поддерживается Центром Информационных Технологий (095) 932-9212, 932-9213, 939-0783 E-mail: info@citforum.ru

Сервер содержит море(!) аналитической информации | CIT Forum CD-ROM

### FIND(1)

НАЗВАНИЕ
find - поиск файлов

СИНТАКСИС

     find  список_поиска выражение

ОПИСАНИЕ
Команда find рекурсивно просматривает каждый из каталогов, перечисленных в списке_поиска, отыскивая файлы, удовлетворяющие логическому выражению, построенному с помощью описанных ниже средств. В список_поиска могут входить и обычные файлы. Далее n обозначает целое десятичное число, на месте которого могут также указываться комбинации +n, что означает "больше, чем n", и -n, что означает "меньше, чем n". Элементарные логические выражения и их результаты:

-name шаблон_файлов
  Истина, если текущий файл удовлетворяет шаблону_файлов. Символы шаблона, имеющие для shell'а специальный смысл, должны быть экранированы.

[-perm] [-]восьмеричное_число
  Истина, если режим доступа к текущему файлу в точности равен восьмеричному_числу [см. chmod(1)]. Если перед восьмеричным_числом указан знак -, то для сравнения из режима файла берутся только биты, соответствующие битам восьмеричного_числа, равным единице.

-type c
  Истина, если файл имеет тип c, где c есть b, c, d, p или f - блочный или символьный специальный файл, каталог, именованный канал или обычный файл.

-links n
  Истина, если на файл имеется n ссылок.

-user имя_пользователя
  Истина, если файл принадлежит пользователю с данным именем. Если имя_пользователя является числом и не встречается в файле /etc/passwd, оно рассматривается как идентификатор пользователя.

-group имя_группы
  Истина, если файл принадлежит группе с данным именем. Если имя_группы является числом и не встречается в файле /etc/group, оно рассматривается как идентификатор группы.

-size n[c]
  Истина, если файл занимает n блоков (по 512 байт). Если указана буква c, то размер файла задается в символах. Напомним, что с помощью комбинаций +n и -n можно проверять размер (и три указанные ниже характеристики) не только на равенство, но и на неравенство.

-atime n
  Истина, если последний доступ к файлу производился n дней назад. Сама команда find изменяет время доступа к каталогам, входящим в список_поиска.

-mtime n
  Истина, если файл последний раз модифицировался n дней назад.

-ctime n
  Истина, если характеристики файла (размер, режим доступа) последний раз изменялись n дней назад.

-exec команда
  Истина, если после выполнения команды возвращается нулевой код завершения. Запись команды должна заканчиваться экранированной точкой с запятой. Аргумент команды { } заменяется текущим маршрутным именем файла.

-ok команда
  Эквивалентно -exec за исключением того, что перед выполнением команды запрашивается подтверждение (в виде сгенерированной командной строки со знаком вопроса в конце) и она выполняется только при ответе y.

-print
  Всегда истина; вызывает выдачу маршрутного имени текущего файла.

-cpio устройство
  Всегда истина; вызывает вывод текущего файла на указанное устройство в формате cpio(1) (записями по 5120 байт).

-newer файл
  Истина, если текущий файл был модифицирован позднее указанного файла.

-depth
  Всегда истина; изменяет способ просмотра каталогов: сначала просматриваются входящие в каталог файлы, а затем уже сам каталог. Этот предикат полезен в сочетании с cpio(1) для переноса файлов из каталогов, на запись в которые нет прав.

-mount
  Всегда истина; ограничивает поиск файловой системой, содержащей указанный в списке_поиска каталог. Если в списке_поиска не указан ни один каталог, используется текущий.

-local
  Истина, если файл физически находится на локальной системе.

(выражение)
  Истина, если истинно заключенное в скобки выражение (скобки должны быть экранированы от интерпретации shell'ом).

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

1. Унарная операция отрицания, обозначается !.
2. Логическое И, обозначается пробелом.
3. Логическое ИЛИ, обозначается -o.

ПРИМЕР

1. Удалить все файлы с именами a.out или *.o, доступ к которым не производился в течение недели:

         find / \( -name a.out -o -name '*.o' \) \
                   -atime +7 -exec rm {} \;

2. Удалить из текущего каталога и его подкаталогов все файлы нулевого размера, запрашивая подтверждение:

         find . -size 0c -ok rm {} \;

ФАЙЛЫ

      /etc/passwd
      /etc/group

СМ. ТАКЖЕ
chmod(1), cpio(1), sh(1), test(1).
stat(2), umask(2), cpio(4), fs(4) в Справочнике программиста.

СЮРПРИЗЫ
Команда

       find / -depth

всегда завершается неудачей с сообщением

       find: stat failed: : No such file or directory

Она исправно обходит все файлы, кроме корневого каталога.

Comments: info@citmgu.ru Designed by Andrey Novikov Copyright © CIT