Команда find, предустановленная во всех дистрибутивах Linux, позволяет осуществлять поиск по имени, дате добавления, содержанию, а также с использованием регулярных выражений.
Команда очень полезна системным администраторам для:
- управления дисковым пространством;
- бекапов;
- операций с файлами.
Содержание
Синтаксис команды find
find [каталог поиска] [параметры] критерий шаблон [действие]
Параметры
В утилите find
параметры используются достаточно редко
- -P
- запрещает перехода по символьным ссылкам
- -L
- разрешает переход по символьным ссылкам
- -H
- запрещает переход по символьным ссылкам за исключением случаев обработки выражений
- -O
- позволяет задать уровень оптимизации выражения из диапазона от 0 до 3 и в подавляющем большинстве случаев не используется
- -D
- предназначен для передачи параметров отладки утилите
Критерии
Основные критерии поиска файлов
- -name
- поиск по имени
- -perm
- поиск по режиму доступа
- -user
- поиск по владельцу
- -group
- поиск по группе
- -mtime
- поиск по времени модификации файла
- -atime
- поиск по дате последнего чтения
- -nogroup
- поиск файлов, не принадлежащих ни одной группе
- -nouser
- поиск файлов без владельцев
- -newer
- найти файлы новее, чем указанный
- -size
- поиск файлов по размеру
Примеры использования команды find
Поиск в текущем каталоге по имени
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ find . -name 'komanda-ls-linux'
./komanda-ls-linux
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$
где
- . (точка)
- файл относится к нынешнему каталогу
- -name
- критерии по которым осуществляется поиск (в данном случае поиск по названию файла)
В данном случае критерий -name
учитывает только символы нижнего регистра и файл. Чтобы убрать чувствительность к регистру необходимо использовать –iname
.
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ find . -iname komanda-ls-linux
./komanda-ls-linux
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$
Поиск в текущем каталоге с шаблоном подстановки
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ find . -name 'komanda*'
./komanda-cal-linux
./komanda-ls-linux
./komanda-diff-linux
./komanda-cat-linux
./RCS/komanda-cal-linux,v
./RCS/komanda-diff-linux,v
./RCS/komanda-ls-linux,v
./RCS/komanda-cat-linux,v
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$
Поиск с шаблоном подстановки и с указанием каталога поиска
oleg@mobile:~:$ find ~/webprojects/linuxcookbook.ru/articles/ -name 'komanda*'
/home/oleg/webprojects/linuxcookbook.ru/articles/komanda-cal-linux
/home/oleg/webprojects/linuxcookbook.ru/articles/komanda-ls-linux
/home/oleg/webprojects/linuxcookbook.ru/articles/komanda-diff-linux
/home/oleg/webprojects/linuxcookbook.ru/articles/komanda-cat-linux
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/komanda-cal-linux,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/komanda-diff-linux,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/komanda-ls-linux,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/komanda-cat-linux,v
oleg@mobile:~:$
Поиск по типу файла
Критерий -type
позволяет искать файлы по типу
- f
- простые файлы
- d
- каталоги
- l
- символические ссылки
- b
- блочные устройства
- c
- символьные устройства
- p
- именованные каналы
- s
- сокеты
oleg@mobile:~:$ find ~/webprojects/linuxcookbook.ru/articles -type d
/home/oleg/webprojects/linuxcookbook.ru/articles
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS
oleg@mobile:~:$
В данном примере осуществлён поиск подкаталогов в указанном каталоге.
Поиск по размеру файла
В данном случае поиск ведётся с использованием критерия -size
.
- +
- Поиск файлов больше заданного размера
- -
- Поиск файлов меньше заданного размера
Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.
Единицы измерения файлов:
- c
- Байт
- k
- Кбайт
- M
- Мбайт
- G
- Гбайт
oleg@mobile:~:$ find ~/webprojects/linuxcookbook.ru/articles -type f -size -10k -size +5k
/home/oleg/webprojects/linuxcookbook.ru/articles/pravilnoe-vypolnenie-nginx-redirect-301
/home/oleg/webprojects/linuxcookbook.ru/articles/find
/home/oleg/webprojects/linuxcookbook.ru/articles/prosmotrschik-izobrazheniy-geeqie
/home/oleg/webprojects/linuxcookbook.ru/articles/faylovyy-menedzher-rox-filer
/home/oleg/webprojects/linuxcookbook.ru/articles/linux-slim
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/utilita-komandnoy-stroki-scrot,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/faylovyy-menedzher-rox-filer,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/prosmotrschik-izobrazheniy-geeqie,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/pravilnoe-vypolnenie-nginx-redirect-301,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/fayl-adstxt-nedostupen,v
/home/oleg/webprojects/linuxcookbook.ru/articles/utilita-komandnoy-stroki-scrot
oleg@mobile:~:$
В данном примере для поиска был задан максимальный и минимальный размер файлов.
Поиск по дате модификации
Для поиска файлов и каталогов по дате модификации используется критерий -mtime
.
oleg@mobile:~:$ find ~/webprojects/linuxcookbook.ru/articles -mtime +60 -mtime -90
/home/oleg/webprojects/linuxcookbook.ru/articles/prosmotrschik-izobrazheniy-geeqie
/home/oleg/webprojects/linuxcookbook.ru/articles/rabochiy-stol-rox
/home/oleg/webprojects/linuxcookbook.ru/articles/faylovyy-menedzher-rox-filer
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/utilita-komandnoy-stroki-scrot,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/faylovyy-menedzher-rox-filer,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/prosmotrschik-izobrazheniy-geeqie,v
/home/oleg/webprojects/linuxcookbook.ru/articles/RCS/rabochiy-stol-rox,v
/home/oleg/webprojects/linuxcookbook.ru/articles/utilita-komandnoy-stroki-scrot
oleg@mobile:~:$
В данном примере был осуществлён поиск файлов, модифицированных между 60 и 90 днями тому назад.
Заключение
Команда find
является в Linux одной из наиболее важных команд. Научиться использовать её несложно даже тем пользователям, которые имеют небольшой опыт, но желают научиться работать в терминале Linux.