Команда find

Wed, Aug 5, 2020 2-minute read

Памятка по команде find. Команда позволяет произвоидить поиск файлов по заданным условиям. Команда “find” очень гибкая, имеет много атрибутов, что позволяет обрабатывать самые разные запросы.

Поиск файлов по имени.

Опция -name.

find . -name "*file*" - где файл "file" шаблон для поиска

Точка после команды указывает на текущий каталог где выполняется команда, так же можно задать для поиска любую другую директорию, например:

find /home/user/ -name "*file*"  

В этом случае поиск будет произведен в директории /home/user/.

Команда find -name ищет совпадения только в имени файла. То есть если файл находится в папке /home/user/file то -name проверяет file.
Если нужно искать совпадение в полном пути /home/user/file поможет атрибут find -wholename будет искать совпадение во всем пути “/home/user/file”
Если поиск должен искать любые совпадения в имени файла без учата регистра испльзуйте find -iname

Поиск по имени владельца и по названию группы:

Для поиска файлов принадлежащих определенному пользовтаелю или группе. Необходимо задать опции -user или -group. Если необходимо найти файлы не пренадлежащие пользователю или группе, то перед опцией нужно указать знак “!”

find . ! -user name_user

find . -group name_group 
    
find . ! -group name_group

Поиск файлов по размеру:

Для того что бы указать размер используется опция -size после вводится буква которая представляет размер поиска.

Cуффикс Значение
b 512-байтовые блоки (по умолчанию)
c Байты
k Килобайты
M Мегабайты
G Гигабайты
 find . -size 5M 

Ищет файлы точно соответствующие 5 мегабайтам.

find . -size +5M 

Ищет файлы более 5 мегабайт

find . -size -5M  

Файлы менее 5 мегабайт

Поиск по типу файла:

find -type

Позволяет указать тип объекта.

Буква типа Значение
f Обычный файл
d Каталог
l Символьная ссылка
b Специальный файл блочного типа
c Специальный файл символьного типа
p FIFO
s Сокет

Поиск файлов по времени:

find -amin|-cmin|-mmin;
find -atime|-ctime|-mtime  // последних суток n*24 если в течении последних 24 часов -ctime 0;
find -anever|-cnewer|-newer|-newerXY ;

a - Доступ к файлу(содержимое файла читали)
c - Изменение файла (изменяли метаданные файлы, но не его содержание)
m - (Данные редактировали)

Например чтобы найти файлы которые были изменены более чем час назад, можно выполнить команду:

find . -mmin +60

Не более чем час назад

find . -mmin -60

Ровно час назад

find . -mmin 60

Для того что бы найти файлы измененные от 1 до 3 дней назад

find . -mtime 1 -a -mtime 3

Оператор -a (AND) объеденяет две опции.
Оператор -o (OR) или Оператор -n (NOT) если выражение не выполняется