
ualinux.com
27
U & L
1 1 - 0 1
Первая опция принимает как имя пользователя, так и
его идентификатор, а вторая — только идентификатор. На-
пример, если мне нужно будет найти все файлы, владель-
цем которых я являюсь, я воспользуюсь одной из команд:
fi nd -user jzb
fi nd -user 1000
fi nd -uid 1000
Также, вам может понадобиться найти файлы принад-
лежащие пользователю А или пользователю Б. Для этого
необходимо объединить два условия поиска при помощи
оператора-o:
fi nd -user root -o -user www-data
Такая команда будет искать файлы, владельцем ко-
торых является пользователь root или же пользователь
www-data. Если же, например, вы хотите найти файлы, вла-
дельцем которых пользователь не является, используйте
оператор «-not»:
fi nd -not -user www-dat
a
Естественно, операторы работают и с другими опция-
ми. К примеру, следующая команда найдёт файлы, вла-
дельцем которых является www-data и которые размером
не более ста килобайт:
fi nd -user www-data -not -size +100k
ПОИСК ПО ГРУППЕ-ВЛАДЕЛЬЦУ
Ещё один способ использования fi nd — поиск файлов,
принадлежащих какой-то группе пользователей. Для этого
используется опция «-group», параметром которой долж-
но быть имя группы или её идентификатор. Например:
fi nd -group admin
В повседневной жизни вы, вероятней всего, будете
комбинировать эту опцию с другими. Например, если вам
нужно отыскать файлы, принадлежащие определённому
пользователю и группе.
ПОИСК ПО ПРАВАМ ДОСТУПА
Иногда может возникнуть необходимость найти файлы,
доступные для записи кому угодно или файлы, имеющие
какие-либо другие «плохие» разрешения. Подобный поиск
fi nd может осуществлять при помощи различных опций.
Простейшие из них — это операторы -readable, -writable
и -executable, которые работают применительно к пользо-
вателю, запустившему fi nd. Имейте ввиду, что в слишком
древних версиях fi nd эти опции отсутствуют.
Другой способ искать файлы с определённым режимом
доступа — использование опции -perm, позволяющей точ-
но определять права доступа искомых файлов. Например,
если вы хотите найти файлы, биты выполнения которых
установлены для владельца и группы, используйте коман-
ду:
fi nd -type f -perm -110
Здесь параметр «110» сообщает fi nd набор битов до-
ступа, а «-» заставляет игнорировать все остальные. Таким
образом, если файл имеет ко всему прочему установлен-
ные биты чтения и записи, он также будет соответствовать
критерию поиска, поскольку для fi nd важно лишь то, что
установлены указанные биты выполнения.
Если вам необходимо точное совпадение с указанным
режимом доступа, то уберите опцию«-».
А что, если вам необходимо найти файлы, исполняемые
владельцем или группой? В это случае вместо «-» исполь-
зуйте «/»:
fi nd -type f -perm /110
Поиск по правам доступа используется часто, хотя и
кажется несколько сложным, поэтому вам может потребо-
ваться какое-то время, чтобы привыкнуть к его синтаксису.
Особенно это касается новичков, которые ещё толком не
разобрались с механизмом взведения битов доступа фай-
лов. В этом случае чтение man-страницы fi nd особенно ре-
комендуется.
ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ
Иногда вам может потребоваться использование регу-
лярных выражений, чтобы определить критерии поиска.
И fi nd поддерживает их даже в большей степени, чем вы,
возможно, ожидали. fi nd не только поддерживает исполь-
зование регулярных выражений, но и позволяет исполь-
зовать различные их типы. Тип регулярного выражения
можно определить при помощи опции -regextype, кото-
рая принимает параметры posix-awk, posix-egrep и тому
подобные. В man-странице вы найдёте полный перечень
поддерживаемых типов регулярных выражений вашей
версией fi nd.
Небольшой пример. Скажем, вам нужно найти файлы,
имеющие расширения «.php» и «.js». Такое можно осуще-
ствить следующей командой:
fi nd
-regextype
posix-egrep
-regex
'.*(php|js)$'
Выглядит страшновато, не так ли? Эта команда говорит
fi nd использовать синтаксис регулярных выражений egrep
(-regextype posix-egrep), а затем сообщает само регулярное
выражение. Выражение обрамлено одинарными кавычка-
ми, чтобы оболочка не пыталась по-своему интерпретиро-
вать спецсимволы, использующиеся в выражении. В самом
выражении «.*» означает любой символ, повторяющийся
ноль или более раз. Часть выражения«(php|js)» сообща-
ет о необходимости искать «php» или «js» (символ верти-
кальной черты используется для определения оператора
«или»). И, наконец, знак доллара в конце выражения сооб-
щает о том, что предыдущая часть выражения должна ис-
каться в конце строки.
U
ser
A
nd
LINUX
Other