-empty
Соответствует пустым файлам и каталогам
-group группа
Соответствует файлам или каталогам, принадлежащим указанной группе. Группа может задаваться именем или числовым идентификатором группы
-iname шаблон
Действует так же, как проверка -name, но различает регистр символов
-inum n
Соответствует файлам с номером индексного узла (inode) n. Эту проверку удобно использовать для поиска всех жестких ссылок на определенный индексный узел
-mmin n
Соответствует файлам или каталогам, содержимое которых последний раз изменялось n минут назад
-mtime n
Соответствует файлам или каталогам, содержимое которых последний раз изменялось n*24 часов назад
-name шаблон
Соответствует файлам и каталогам, имена которых совпадают с указанным шаблоном
-newer имя
Соответствует файлам и каталогам, содержимое которых последний раз изменялось позже, чем у файла с указанным именем. Эта проверка может пригодиться в сценариях, выполняющих резервное копирование файлов. Каждый раз в процессе создания резервной копии можно обновлять файл (например, файл журнала) и затем с помощью find определять, какие файлы изменились с момента последнего обновления
-nouser
Соответствует файлам и каталогам, не принадлежащим какому-либо допустимому пользователю. Эту проверку можно использовать для поиска файлов, принадлежащих удаленным учетным записям, или для обнаружения следов злоумышленников
-nogroup
Соответствует файлам и каталогам, не принадлежащим какой-либо допустимой группе
-perm режим
Соответствует файлам или каталогам с указанным режимом доступа. Режим может выражаться восьмеричным числом или иметь символическую форму
-samefile имя
Действует так же, как проверка -inum. Соответствует файлам с тем же номером индексного узла (inode), что и файл с указанным именем
-size n
Соответствует файлам с размером n
-type c
Соответствует файлам с типом c
-user имя
Соответствует файлам или каталогам, принадлежащим пользователю с указанным именем. Аргумент имя может быть именем или числовым идентификатором пользователя
Это не полный список. Дополнительные детали ищите на странице справочного руководства (man) для команды find.
Операторы
Несмотря на большое число проверок, поддерживаемых командой find, мы все еще нуждаемся в способе определения
[me@linuxbox ~]$ find ~ \( -type f -not -perm 0600 \) -or \( -type d -not –perm 0700 \)
Ф-фу! Как неизящно! Что все это значит? На самом деле операторы перестанут казаться избыточно сложными, как только вы с ними познакомитесь поближе (табл. 17.4).
Имея список операторов под рукой, попробуем разобрать команду find. На самом верхнем уровне мы видим, что проверки объединены в две группы, разделенные оператором -or:
(
Таблица 17.4. Логические операторы, поддерживаемые командой find
Оператор
Описание
-and
Соответствует, если выполняются условия в проверках с обеих сторон от оператора. Можно сократить до -a. Обратите внимание, что в отсутствие операторов по умолчанию подразумевается -and
-or
Соответствует, если выполняется условие с одной из сторон от оператора. Можно сократить до -o
-not
Соответствует, если условие в проверке, следующей за оператором, не выполняется. Можно сократить до -!
( )
Группируют проверки и операторы для формирования крупных выражений. Используются для управления порядком проверок. По умолчанию проверки выполняются слева направо. Часто используются для изменения порядка проверок по умолчанию, чтобы получить желаемый результат. Даже если скобки не нужны, иногда полезно включать их, чтобы сделать команды более наглядными. Не забывайте, что круглые скобки имеют специальное значение для командной оболочки, поэтому их нужно экранировать, чтобы они передавались команде find как аргументы. Обычно экранирование выполняют с помощью символа обратного слеша
В этом есть определенный смысл, потому что мы хотим найти файлы с одним набором разрешений и каталоги – с другим. Но если выполняется поиск и файлов и каталогов, почему используется оператор -or вместо -and? Потому что find, выполняя обход файлов и каталогов, оценивает их по одному, чтобы понять, соответствует ли файл или каталог указанным проверкам. Команде требуется узнать, является ли очередной элемент файлом или каталогом с «плохими» разрешениями. Один и тот же элемент не может соответствовать сразу двум условиям. То есть если развернуть сгруппированные выражения, можно увидеть следующее: