find - универсальная команда поиска файлов в linux
find - очень мощная утилита для поиска файлов, которая позволяет очень тонко настроить поиск и задать команды по обработке его результатов.
При настройке критериев поиска команды find обязательно нужно указывать тип файла. Если тип файла не будет указан, в результате поиска find может найти все одноимённые файлы, ссылки и папки. И нельзя будет понять, где здесь файл, где ссылка, а где каталог.
Поиск по типу файла
В линукс различают следующие типы файлов:
- f - обычные файлы (текст, видео, фото, конфигурационные файлы и т. д.) ;
- d - директории (каталоги или папки), в которых хранятся файлы;
- l - символические ссылки (на каталоги и файлы) ;
- b - физические блочные устройства (dev). Например, жёсткий диск, ssd или карта памяти;
- с - символьные устройства. Эти устройства работают с потоками данных. С них можно только считать символы или записать их на них. Примером символьного устройства является /dev/null или принтер, напрямую подключенный к компьютеру. Взаимодействие системы с символьным устройством имее следующую особенность: после передачи на них данных, драйвер не позволяет проверить или изменить записанную информацию;
- p - именованные каналы. Они схожи с символьными устройствами. Отличаются от них тем, что на другом конце потока ввода/вывода находится не драйвер устройства, а другой процесс.
- s - сокеты. Это специализированные интерфейсы, которые используются для обеспечения взаимодействия между процессами в Linux.
-type
Для того, чтобы указать команде find тип искомого файла, используется параметр -type.
Команда
find /home/rza -type f name '1.*'
найдёт все обычные файлы 1.txt, 1.png, 1.jpg. и т. д., которые лежат в директории rza и её папках.
Команда
find / -maxdepth 1 -type d
отобразит все основные каталоги, примонтированные к корневому каталогу / файловой системы. Параметр
-maxdepth 1
указывает максимальную глубину поиска.

Командой
find /dev -type d
можно посмотреть список всех блочных устройств в каталоге /dev.
Команда
find / -type c
выведет перечень символьных файлов в системе.
Команда
find / -type s
найдет все соккеты.
По команде
find . -type p
будут найдены файлы типа именнованный канал, хранящиеся в текущем каталоге.
Поиск файлов по времени создания, изменения, последнего доступа
Каждый файл в linux имеет временные метки:
- atime - показывает время последнего доступа к файлу. Время последнего доступа означает, когда какая-либо программа обращалась к файлу для его чтения или отображения;
- mtime - отображает время последнего изменения файла;
- ctime - показывает, когда последний раз менялось имя файла и его месторасположение, владелец и права доступа.
Посмотреть время создания, изменения, модификация параметров и его месторасположение можно командой stat
stat hello.py

Команда find имеет параметры:
- -atime - время последнего доступа в vtcz;
- -mtime - время изменения, в сутках;
- -ctime - время последней модификации параметров файла, в сутках.
- amin - время последнего доступа, в минутах;
- -mmin - время последнего изменения файла, в минутах;
- -cmin - время последней модификации параметров файла в минутах.
Найти все файлы, к которому не обращались в течение полгода
find / -type f -atime +180
Найти все файлы, к которым обращались в последние 10 мин:
find / -type f -amin -10
Поиск файлов, измененных более года назад:
find / -type f -mtime +360
Найти все файлы в системе, измененные в течение суток:
find / -type f -mmin -24
Поиск файлов формата jpg, модифицированных за последние сутки в текущей папке:
find . -type f cmin -24 -name "*.jpg"
Найти файлы, размером более терабайт, модифицированные более года назад
find /home/user/video -ctime +365 -size 1G