👸 Как использовать на Linux команду find для поиска файлов

by itisgood

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

Может быть, есть конфигурационный файл, а вы не знаете, где его найти, и вам остается его искать.

Команда find поможет вам найти его.

Эта команда просто ищет файлы в иерархии каталогов.

Это мощная команда, которая может искать файлы на основе различных критериев, таких как права доступа, время модификации, владение, размер.

Она также может находить файлы и изменять их, например, изменять их разрешения и даже удалять их.

Упрощенный синтаксис выглядит следующим образом

$ find [options] [path or directory…] [your-expression]

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

1. Поиск файлов с заданным расширением

Поиск всех файлов с расширением .pdf в каталоге /home/tech/

$ find /home/tech/ -name "*.pdf"

Поиск всех файлов с расширением .pdf в текущем каталоге

$ find . -name "*.pdf"

2. Поиск по типу, используя опцию -type

Вы можете указать несколько параметров, используя опцию -type следующим образом:

  • f: искать обычный файл
  • d: искать каталог
  • l: для поиска символической ссылки
  • c: для поиска символьных устройств
  • б: Для поиска блочных устройств
  • p: для поиска именованного канала (FIFO)
  • s: искать сокет

Поиск в нескольких каталогах файла httpd.conf

$ find /home /etc /var -name httpd.conf -type f

Найти все каталоги в корне (/) с именем django.

$ find / -type d -name django

3. Найти файлы с конкретными правами

Эта команда найдет файлы в режиме 644 и выведет их.

$ find /home -type f -perm 0644 -print

4. Найти файлы в зависимости от размера

Чтобы найти файлы размером более 10 мегабайт и отсортировать их по размеру:

find . -size +10M -type f -print0 | xargs -0 ls -Ssh | sort -z

Манипулирование файлами

Найти файлы и каталоги с заданным разрешением и изменением разрешений

## Найти файлы с режимом 755 и изменить на 777
find /home -type f -perm 0755 -print -exec chmod 777 {} \;

## Для каталогов
find /home -type d -perm 0755 -print -exec chmod 777 {} \;

Поиск и удалить файлы на основе критериев поиска.

find /etc -type f -name "*.pdf" -exec rm -f {} \;
find ./path/ -name '*.txt' -exec rm '{}' \;

Поиск файлов по времени их изменения

find /etc/selinux -name "*.conf" -mtime 5

Выше находятся файлы с именами, которые заканчиваются символами conf в указанном каталоге и были изменены в предыдущие 5 дней.

Найти и удалить файлы сжатых файлов в каталоге /data старше 7 дней.

find /data/*.gz -mtime +7 -exec rm -rf {} \;

Найти и удалить файлы и каталоги

find /var -name "*.backup" -delete
find / -type f -name *.txt -exec rm {} \;
find / -type d -name flask -exec rm -rf {} \;  ## directory

Найти и удалить пустые каталоги в текущем рабочем родительском каталоге.

find . -type d -empty -exec rmdir {} \;

Поиск файлов по владельцу

Найти все файлы, принадлежащие  пользователю tech

find /home -user tech

Найдите файлы pdf, принадлежащие пользователю tech, в каталоге /var

find /var -user tech -iname "*.pdf"

Найти все файлы, принадлежащие группе accounts

find /home -group accounts

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

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

Чтобы найти все файлы 70 МБ в каталоге /var, выполните

find /var -size 70M

Поскольку вы можете сопоставить файлы с их размерами, вы также можете удалить их следующим образом

find /var -size +70M -exec rm -rf {} \;

Заключение

Теперь вы можете легко находить ваши файлы и достигать еще большего с помощью утилиты find.

Спасибо, что прочитали, и мы надеемся, что это было информативно.

 

Loading

You may also like

Leave a Comment