Linux

Команда find

Команда find производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.

Синтаксис команды find:

find directory-to-search criteria action

Где:

Поиск по имени

Следующая команда ищет файл s.txt в текущем каталоге:

find . -name "s.txt"

Где:

В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.

find . -iname "s.txt"

Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:

find . -name "*.png"

Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:

find /home -name "*.png"

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

Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:

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

find . -type d

Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.

В данном случае поиск выведет все файлы более 1 Гб (+1G):

find . -size +1G

Единицы измерения файлов:

Поиск пустых файлов и каталогов

Критерий -empty позволяет найти пустые файлы и каталоги:

find . -empty

Поиск времени изменения

Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:

find . -cmin -60

Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60:

find . -cmin +60

Поиск по времени доступа

Критерий -atime позволяет искать файлы по времени последнего доступа:

find . -atime +180

Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней)

Поиск по имени пользователя

Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:

find /home -user sensei 

Поиск по набору разрешений

Критерий -perm – ищет файлы по определенному набору разрешений.

find /home -perm 777

Операторы

Для объединения нескольких критериев в одну команду поиска можно применять операторы: -and -or -not Например, чтобы найти файлы размером более 1 Гбайта пользователя sensei необходимо ввести следующую команду:

find /home -user sensei -and -size +1G

Если файлы могут принадлежать не только пользователю sensei, но и пользователю khasan, а также быть размером более 1 Гбайта.

find /home \( -user khasan -or -user sensei \) -and -size +1G

Перед скобками нужно поставить обратный слеш «\».

Действия

К команде find можно добавить действия, которые будут произведены с результатами поиска:

Первый полезен, когда необходимо найти и удалить все пустые файлы, например:

find . -empty -delete

Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print. exec действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска:

-exec command {} \;

Где:

С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:

find . -empty -exec rm {} \;

Другой пример использования действия -exec:

find . -name "*.jpg" -exec cp {} /backups/fotos \;

Таким образом можно скопировать все .jpg изображения в каталог backups/fotos