Команда find в Linux

Опубликовано admin - чт, 05/05/2022 - 09:34

Команда find, предустановленная во всех дистрибутивах Linux, позволяет осуществлять поиск по имени, дате добавления, содержанию, а также с использованием регулярных выражений.

Команда 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.

Поделиться с друзьями