Поиск определенного файла в вашей системе может быть проблемой, если вы не обладаете знаниями о правильных инструментах, которые можно использовать для облегчения вашей работы.
Может быть, есть конфигурационный файл, а вы не знаете, где его найти, и вам остается его искать.
Команда 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.
Спасибо, что прочитали, и мы надеемся, что это было информативно.