FIND(1) 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
Она исправно обходит все файлы, кроме корневого катало-
га.
|