Краткая инструкция по использованию команды find в Linux

Команда find — это мощный инструмент для поиска файлов и каталогов в Linux по различным критериям: имени, размеру, времени изменения, правам доступа и другим атрибутам.


Основной синтаксис:

find [путь] [опции] [действие]

1. Поиск по имени или шаблону

  • Поиск файла по точному имени:

    find /путь/к/поиску -name "имя_файла"
    

    Пример:

    find /home -name "document.txt"
    
  • Поиск по шаблону (с использованием * и ?):

    find /путь -name "*.txt"  # все файлы с расширением .txt
    find /путь -name "file?.log"  # file1.log, file2.log и т.д.
    
  • Без учета регистра (-iname):

    find /путь -iname "Document.TXT"  # найдет document.txt, DOCUMENT.TXT и т.д.
    

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

  • Только файлы (-type f):

    find /путь -type f -name "*.sh"
    
  • Только каталоги (-type d):

    find /путь -type d -name "Downloads"
    
  • Символические ссылки (-type l):

    find /путь -type l -name "mylink"
    

3. Поиск по размеру

  • Файлы больше 10 МБ (+ — больше, - — меньше):

    find /путь -size +10M
    
  • Файлы от 1 КБ до 1 МБ:

    find /путь -size +1K -size -1M
    
  • Пустые файлы или каталоги:

    find /путь -empty
    

Единицы измерения:

  • b — блоки (512 байт)
  • c — байты
  • k — килобайты
  • M — мегабайты
  • G — гигабайты

4. Поиск по времени изменения/доступа

  • Измененные за последние N дней (-mtime):

    find /путь -mtime -7  # изменены в последние 7 дней
    find /путь -mtime +30 # изменены более 30 дней назад
    
  • Доступные за последние N дней (-atime):

    find /путь -atime -1  # открывались за последний день
    
  • Измененные в течение минут (-mmin):

    find /путь -mmin -60  # изменены за последний час
    

5. Поиск по правам доступа (-perm)

  • Файлы с правами 755:

    find /путь -perm 755
    
  • Файлы, доступные для записи (-writable):

    find /путь -writable
    

6. Поиск по владельцу/группе

  • Файлы, принадлежащие пользователю (-user):

    find /путь -user username
    
  • Файлы, принадлежащие группе (-group):

    find /путь -group groupname
    

7. Выполнение действий с найденными файлами (-exec)

  • Удалить все .tmp-файлы:

    find /путь -name "*.tmp" -exec rm {} \;
    
    • {} — заменяется на имя найденного файла.
    • \; — конец команды.
  • Изменить права доступа:

    find /путь -name "*.sh" -exec chmod +x {} \;
    

8. Комбинирование условий

  • И (-a или по умолчанию):

    find /путь -name "*.log" -size +1M
    
  • ИЛИ (-o):

    find /путь -name "*.txt" -o -name "*.pdf"
    
  • Отрицание (-not или !):

    find /путь -not -name "*.tmp"
    find /путь ! -user root
    

9. Ограничение глубины поиска

  • Поиск только в текущем каталоге (-maxdepth 1):

    find . -maxdepth 1 -name "*.txt"
    
  • Поиск на глубине до 3 подкаталогов:

    find /путь -maxdepth 3 -name "file*"
    

10. Полезные примеры

  • Найти и удалить все файлы .bak:

    find ~ -name "*.bak" -delete
    
  • Найти файлы и вывести их размеры:

    find /путь -type f -exec ls -lh {} \;
    
  • Найти файлы и архивировать их:

    find /путь -name "*.log" -exec tar -rvf logs.tar {} \;
    

Заключение

Команда find — один из самых гибких инструментов для работы с файлами в Linux. С ее помощью можно быстро находить нужные данные и выполнять с ними различные действия. Для более подробной информации воспользуйтесь командой:

man find