Краткая инструкция по использованию команды 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