find - это одна из мощных команд в арсенале Linux, которая позволяет находить файлы и каталоги по множеству критериев. Применяя её в комбинации с другими утилитами и флагами, вы можете добиться впечатляющих результатов и автоматизировать рутинные задачи.Пример базового поиска всех файлов с расширением .txt в текущем каталоге:
find . -name "*.txt"
Но что если задача чуть сложнее, чем просто найти файлы с одним расширением?
1. Поиск по времени изменения и доступа. find может искать файлы по дате их изменения или доступа:
Файлы, измененные за последние 7 дней/Файлы, доступ к которым был более 30 дней назад:
find /path/to/dir -mtime -7
find /path/to/dir -atime +30
2. Поиск по размеру. Если вам нужно найти файлы определенного размера/Файлы меньше 1 КБ:
find /path/to/dir -size +100M
find /path/to/dir -size -1k
3. Поиск по типу файла. find может искать определенные типы файлов:
Только каталоги/Только обычные файлы:
find /path/to/dir -type d
find /path/to/dir -type f
4. Комбинирование условий. С помощью логических операторов можно комбинировать разные условия:
Поиск файлов .log, измененных за последние 3 дня:
find /path/to/dir -name "*.log" -mtime -3
Исключение определенных файлов:
find /path/to/dir -type f ! -name "*.bak"
5. Выполнение действий с найденными файлами. find поддерживает выполнение команд с найденными файлами:
Удаление файлов старше 30 дней/Сжатие найденных файлов:
find /path/to/dir -type f -mtime +30 -exec rm {} \;
find /path/to/dir -name "*.log" -exec gzip {} \;
6. Использование find с xargs для повышения производительности. Для более эффективной обработки большого количества файлов используйте
xargs:Удаление всех файлов .tmp с помощью xargs:
find /path/to/dir -name "*.tmp" | xargs rm
Бонусом, полезные флаги:
-maxdepth N: Ограничивает глубину поиска.
-mindepth N: Исключает файлы выше указанной глубины.
-print0 и xargs -0: Обработка имен файлов с пробелами.
BashTex 📱 #linux #utils