Поиск по сайту:

Как исключить каталоги из поиска команды Find в Linux


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

В этом уроке вы узнаете:

  • Как использовать опцию -prune для исключения каталогов
  • Сочетание -prune с другими параметрами find
  • Использование нескольких параметров -prune для сложных исключений
  • Как исключить каталоги, используя имена путей
  • Исключение каталогов по шаблонам
  • Расширенное использование логических операторов
  • Реальные примеры с различными потребностями в исключении
  • Понимание влияния исключений на производительность

Исключение каталогов из поиска команды Find

При работе с командой find вам может потребоваться исключить определенные каталоги из результатов поиска. Это может быть особенно полезно при работе с большими структурами каталогов или когда вы хотите сосредоточиться на определенных областях вашей файловой системы. Вот несколько способов добиться этого, проиллюстрированные примерами, основанными на следующей структуре песочницы:

.
├── dir1
│   ├── dir2
│   │   └── dir3
│   │       └── file2
│   └── file1
├── dir4
│   └── file3
└── dir5
    └── dir6
        ├── dir4
        │   └── file4
        └── file4
  1. Использование -prune для исключения каталога: параметр -prune можно использовать для исключения каталога и его содержимого из поиска.

    find . -path "./dir1" -prune -o -print

    Эта команда исключит dir1 и его содержимое из результатов поиска. Параметр -path указывает каталог, который необходимо исключить, а параметр -prune предотвращает переход find в этот каталог. Оператор -o (OR) позволяет продолжить поиск в других каталогах, а -print отображает результаты.

  2. Использование параметра -prune для исключения каталога

  3. Исключение нескольких каталогов. Вы можете исключить несколько каталогов, комбинируя несколько параметров -prune.

    find . -path "./dir1" -prune -o -path "./dir5" -prune -o -print

    Эта команда исключает из результатов поиска как dir1, так и dir5.

  4. Исключение нескольких каталогов с помощью команды find

  5. Исключение каталогов по шаблону имени. Используйте параметр -name, чтобы исключить каталоги, соответствующие определенному шаблону.

    find . -name "dir4" -prune -o -print

    Эта команда исключает из результатов поиска все каталоги с именем dir4.

  6. Исключение каталогов по шаблону имени с помощью find

  7. Сочетание -prune с другими параметрами поиска. Вы можете комбинировать -prune с другими параметрами find, чтобы уточнить поиск.

    find . -path "./dir1" -prune -o -type f -name "*.txt" -print
  8. Эта команда исключает dir1 и ищет файлы .txt в других каталогах.

  9. Исключение каталогов по сложному шаблону. Используйте комбинацию параметров для более сложных исключений.

    find . \( -path "./dir1" -o -path "./dir5" \) -prune -o -type f -print
  10. Эта команда исключает как dir1, так и dir5 и выводит список всех файлов в других каталогах.

  11. Использование параметра -not: параметр -not также можно использовать для исключения.

    find . -not -path "./dir1/*" -print
  12. Эта команда исключает все файлы и каталоги в dir1. данные-предохранитель="22189504506">

  13. Исключение каталогов на основе глубины. Управляйте глубиной поиска, чтобы исключить более глубокие каталоги.

    find . -maxdepth 2 -path "./dir1/dir2" -prune -o -print
  14. Эта команда исключает dir2 внутри dir1, если глубина больше 2.

  15. Расширенное использование логических операторов. Комбинируйте логические операторы для расширенных исключений.

    find . -path "./dir1" -prune -o -type f \( -name "*.sh" -o -name "*.py" \) -print
  16. Эта команда исключает dir1 и ищет файлы .sh и .py в других каталогах.

Заключение

Исключение каталогов из поиска команды find может значительно упростить поиск файлов и повысить эффективность. Понимая и используя такие параметры, как -prune, -path и логические операторы, вы можете адаптировать свой поиск в соответствии с конкретными потребностями и избежать нерелевантных результатов. Потренируйтесь на представленных примерах и адаптируйте их к своим собственным структурам каталогов и требованиям поиска.