Команда find в Linux

Tow

В зависимости от поставленных задач, рано или поздно возникает необходимость в поиске файлов по тому или иному критерию

Наличие в Linux команды find, во многом помогает справиться с данной задачей.

Формат команды find

find путь -опции

где путь — это каталог, в котором произвести поиск. В качестве пути можно указывать следующие значения:
. — поиск в текущем каталоге;
/ — поиск от корневого каталога;
~ — поиск в домашнем каталоге.

А вот опций немного больше и разнообразней. Итак, основные опции команды find:
-name — поиск файлов по имени, используя приведенный шаблон;
-user — поиск файлов, принадлежащих указанному пользователю;
-group — поиск файлов, принадлежащих указанной группе;
-perm — поиск файлов с указанным режимом доступа;
-type — поиск файлов определенного типа. Типов тоже достаточно:
b — специальный блочный файл;
d — каталог;
c — специальный символьный файл;
f — обычный файл;
l — символическая ссылка;
p — именованный канал;
s — сокет.
-size n — поиск файлов с размером n единиц;
-mtime -n +n — поиск файлов, содержание которых изменялось менее чем (-) или более чем (+) дней назад.
Рассмотрим некоторые примеры применения команды find:

Примеры команды find с опцией -name:

find /home/user -name "*.tar" -print

произведет поиск всех файлов (об этом свидетельствует знак *), имеющих расширение .tar в домашнем каталоги пользователя /home/user.

find ~ -name ".bash*" -print

выведет на экран список файлов домашнего каталога, начинающихся на .bash.

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

find / -name "[a-c]*" -print

Вышеуказанная команда позволит отыскать все файлы в системе, начинающиеся с букв от a до c.

Пример команды find с опцией -perm

Если потребуется найти файлы, имеющие определенные режимы доступа, вам поможет опция -perm, которая легко в этом поможет.

К примеру, выполним поиск файлов с режимом доступа 775, находящихся в текущем каталоге :

find . -perm 775 -print

Пример команды find с опцией -user или -group

Поиск файлов какого-либо определенного пользователя крайне прост в своей реализации. Для этого достаточно выполнить команду:

find / -user admin -print

Данная команда произведет поиск файлов в системе, принадлежащих пользователю admin.

Чтобы найти файлы, принадлежащие определенной группе например nobody, выполним команду:

find / -group nobody -print

Пример команды find с опцией -type

Поиск всех файлов в каталоге /home/user:

find /home/user -type f -print

Также можно вывести и все каталоги в домашней дериктории /home/user

find /home/user -type d -print

Пример команды find с опцией -size

Опция -size позволяет произвести поиск файлов определенного размера:

find . -size 450k -print

Вышеуказанная команда отыщет и отобразит на экране файлы размером 450 кбайт, находящийся в текущем каталоге. Также можно использовать знаки + или - , если надо найти файлы больше данного размера или меньше данного размера соответственно:

find . -size +450k -print
find . -size -450k -print

Пример команды find с опцией -mtime

Опция -mtime позволит вам найти файлы, изменявшиеся в какой-то срок времени.

К примеру, у нас встала задача поиска файлов, находящихся в каталоге /tmp изменявшихся за последние 5 дней:

find /tmp -mtime -5 -print

Если нам необходимо обратное, к примеру, отыскать файлы, которые не изменялись неделю, применим команду:

find /tmp -mtime +7 -print

Ещё примеры использования команды find

Давайте рассмотрим еще несколько примеров

Выставляем разрешения 777 на каталог /home/Films/

find /home/Films/ -type d -exec chmod 777 {} \;

Меняем владельца на каталог /home/Films/ и все его подкаталоги

find /home/Films/ -type d -exec chown admin:admin {} \;

Выставляем разрешения 655 на все файлы в каталоге /home/Films/ и все его подкаталоги

find /home/Films/ -type f -exec chmod 655 {} \;

Меняем владельца на все файлы в каталоге /home/Films/

find /home/Films/ -type f -exec chown admin:admin {} \;

Удаляем все файлы из системы расширением *.exe

find / -type f -name "*.exe" -delete
Если есть вопросы, то пишем в комментариях и не забываем проголосовать за статью.
Команда find в Linux
5 (100%) 1 vote

2 комментария

  1. Brentbrarp 2017-02-21
  2. Человек-Пароход 2016-12-18

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *