Как исключить каталоги из поиска команды Find в Linux
В этой статье мы углубимся в методы явного исключения каталогов из поиска команды find
в Linux. Команда find
— мощная утилита для поиска файлов и каталогов в иерархии каталогов. Однако существуют сценарии, в которых вы можете захотеть исключить определенные каталоги из поиска, чтобы ускорить процесс или избежать нерелевантных результатов. Мы рассмотрим различные варианты и предоставим практические примеры использования структуры каталогов песочницы.
В этом уроке вы узнаете:
- Как использовать опцию
-prune
для исключения каталогов - Сочетание
-prune
с другими параметрамиfind
- Использование нескольких параметров
-prune
для сложных исключений - Как исключить каталоги, используя имена путей
- Исключение каталогов по шаблонам
- Расширенное использование логических операторов
- Реальные примеры с различными потребностями в исключении
- Понимание влияния исключений на производительность
Исключение каталогов из поиска команды Find
При работе с командой find
вам может потребоваться исключить определенные каталоги из результатов поиска. Это может быть особенно полезно при работе с большими структурами каталогов или когда вы хотите сосредоточиться на определенных областях вашей файловой системы. Вот несколько способов добиться этого, проиллюстрированные примерами, основанными на следующей структуре песочницы:
.
├── dir1
│ ├── dir2
│ │ └── dir3
│ │ └── file2
│ └── file1
├── dir4
│ └── file3
└── dir5
└── dir6
├── dir4
│ └── file4
└── file4
Использование -prune для исключения каталога: параметр
-prune
можно использовать для исключения каталога и его содержимого из поиска.find . -path "./dir1" -prune -o -print
Эта команда исключит
dir1
и его содержимое из результатов поиска. Параметр-path
указывает каталог, который необходимо исключить, а параметр-prune
предотвращает переходfind
в этот каталог. Оператор-o
(OR) позволяет продолжить поиск в других каталогах, а-print
отображает результаты.Исключение нескольких каталогов. Вы можете исключить несколько каталогов, комбинируя несколько параметров
-prune
.find . -path "./dir1" -prune -o -path "./dir5" -prune -o -print
Эта команда исключает из результатов поиска как
dir1
, так иdir5
.Исключение каталогов по шаблону имени. Используйте параметр
-name
, чтобы исключить каталоги, соответствующие определенному шаблону.find . -name "dir4" -prune -o -print
Эта команда исключает из результатов поиска все каталоги с именем
dir4
.Сочетание -prune с другими параметрами поиска. Вы можете комбинировать
-prune
с другими параметрамиfind
, чтобы уточнить поиск.find . -path "./dir1" -prune -o -type f -name "*.txt" -print
Исключение каталогов по сложному шаблону. Используйте комбинацию параметров для более сложных исключений.
find . \( -path "./dir1" -o -path "./dir5" \) -prune -o -type f -print
Использование параметра -not: параметр
-not
также можно использовать для исключения.find . -not -path "./dir1/*" -print
Исключение каталогов на основе глубины. Управляйте глубиной поиска, чтобы исключить более глубокие каталоги.
find . -maxdepth 2 -path "./dir1/dir2" -prune -o -print
Расширенное использование логических операторов. Комбинируйте логические операторы для расширенных исключений.
find . -path "./dir1" -prune -o -type f \( -name "*.sh" -o -name "*.py" \) -print
Эта команда исключает dir1
и ищет файлы .txt
в других каталогах.
Эта команда исключает как dir1
, так и dir5
и выводит список всех файлов в других каталогах.
Эта команда исключает все файлы и каталоги в dir1
. данные-предохранитель="22189504506">
Эта команда исключает dir2
внутри dir1
, если глубина больше 2.
Эта команда исключает dir1
и ищет файлы .sh
и .py
в других каталогах.
Заключение
Исключение каталогов из поиска команды find
может значительно упростить поиск файлов и повысить эффективность. Понимая и используя такие параметры, как -prune
, -path
и логические операторы, вы можете адаптировать свой поиск в соответствии с конкретными потребностями и избежать нерелевантных результатов. Потренируйтесь на представленных примерах и адаптируйте их к своим собственным структурам каталогов и требованиям поиска.