Команда find
в Linux — один из самых мощных инструментов для поиска файлов и директорий. Однако при работе с большими файловыми системами часто возникает необходимость исключить определённые папки из поиска, чтобы ускорить процесс и получить более релевантные результаты. В этой статье мы подробно разберём, как это сделать.
Основы поиска файлов командой find

Перед тем как перейти к исключению директорий, вспомним базовый синтаксис команды:
find [где искать] [параметры поиска] [действие]
Например, поиск всех файлов с именем document.txt
в текущей директории и её подпапках:
find . -name "document.txt"
Зачем исключать папки из поиска?
✅ Ускорение процесса — исключение ненужных директорий (например, системных или кэш-папок) значительно сокращает время поиска
✅ Уменьшение нагрузки на диск
✅ Более точные результаты — исключение заведомо неподходящих мест поиска
Способы исключения директорий
1. Использование -prune (рекомендуемый способ)
Синтаксис:
find . -path "./исключаемая_папка" -prune -o -name "шаблон_поиска" -print
Пример (исключаем папку cache
):
find . -path "./cache" -prune -o -name "*.log" -print

2. Исключение нескольких папок
find . \( -path "./dir1" -o -path "./dir2" \) -prune -o -name "*.txt" -print

3. Исключение по типу файла
Можно комбинировать с другими условиями:
find . -path "./temp" -prune -o \( -name "*.jpg" ! -name "thumb*" \) -print
Практические примеры
Пример 1: Поиск конфигурационных файлов, исключая системные директории
find / \( -path "/proc" -o -path "/sys" -o -path "/dev" \) -prune -o -name "*.conf" -print
Пример 2: Рекурсивный поиск PHP-файлов, исключая vendor и cache
find . \( -path "./vendor" -o -path "./cache" \) -prune -o -name "*.php" -print
Частые ошибки и их решение

- Не работает исключение
- Убедитесь, что путь указан правильно (лучше использовать
-path
вместо-name
для директорий) - Проверьте, что после
-prune
идёт-o
- Убедитесь, что путь указан правильно (лучше использовать
- Команда выводит исключённые папки
- Добавьте
-print
в конец команды
- Добавьте
- Проблемы с пробелами в именах
- Используйте кавычки:
-path "./моя папка"
- Используйте кавычки:
Альтернативные методы
Для сложных случаев можно использовать:
grep -v
в комбинации сfind
- Утилиту
fd
(более современная альтернативаfind
) ripgrep
для поиска по содержимому с фильтрацией
Заключение
Исключение директорий при поиске — важный навык для эффективной работы в Linux. Освоив параметры -prune
и -path
, вы сможете:
- Ускорять поиск в несколько раз
- Уменьшать нагрузку на систему
- Получать более точные результаты
Для более сложных сценариев изучите man find
— команда поддерживает десятки полезных параметров.
Попробуйте приведённые примеры в своей системе и напишите в комментариях, какие варианты исключения директорий используете вы!
Дополнительные материалы.
- Команда find в Linux: полное руководство по поиску файлов
- Как копировать большое количество файлов в Linux
- Как копировать файлы с определённым расширением рекурсивно в Linux
Was this helpful?
0 / 0