Как использовать параметры maxdepth и mindepth в команде find в Linux

В этом руководстве мы рассмотрим, как использовать опции maxdepth и mindepth с командой find для поиска файлов и каталогов в указанном диапазоне, то есть уровней глубины в Linux с примерами.

В конце мы также приведем простую аналогию, чтобы помочь новичкам легко понять опции mindepth и maxdepth команды find в Linux.

Что такое опции maxdepth и mindepth в команде find?

Для тех, кто еще не знает, опция maxdepth в команде find задает максимальную глубину (количество уровней) для спуска в иерархию каталогов. Она ограничивает поиск определенным уровнем глубины или меньшим.

Опция mindepth задает минимальную глубину (количество уровней), на которой поиск должен начать применять тесты или действия. Это гарантирует, что поиск не будет включать файлы или каталоги на более мелких уровнях.

Опции maxdepth и mindepth позволяют ограничить глубину обхода каталога, что может быть полезно, когда вы хотите сосредоточиться на определенных уровнях дерева каталогов.

Давайте посмотрим несколько примеров использования этих двух опций для эффективного поиска файлов и каталогов из командной строки в системе Linux.

Поиск файлов и каталогов в указанном диапазоне с помощью опций maxdepth и mindepth команды find

Для демонстрации мы будем использовать следующую директорию.

tree MyFiles/
MyFiles/
├── Dir1
│   ├── Dir2
│   │   ├── Dir3
│   │   │   └── file3
│   │   └── file2
│   ├── file1
│   └── file1.1
├── myfile1
├── myfile2
└── myfile3
3 directories, 7 files

Как видите, в ней есть 3 поддиректории, а именно dir1, dir2 и dir3, и 7 файлов, а именно myfile1, myfile2, myfile3, file1, file1.1, file2 и file3 в корневой директории под названием MyFiles*

Учитывая предоставленную структуру каталогов MyFiles/, давайте рассмотрим, как можно использовать опции maxdepth и mindepth команды find для целенаправленного поиска файлов или каталогов на определенной глубине.

Использование опции µµ0µµ

Опция maxdepth ограничивает поиск определенным количеством уровней ниже начальной точки команды.

Пример 1:

Список всего, что находится в пределах MyFiles/ до 1 уровня в глубину (включая файлы и каталоги непосредственно под MyFiles/, но не далее).

find MyFiles/ -maxdepth 1

Это перечислит Dir1, myfile1, myfile2 и myfile3, но не перечислит Dir2, file1, file1.1 или что-либо ниже Dir2.

Пример 2:

Перечислит все до 2 уровней в глубину .

find MyFiles/ -maxdepth 2

Сюда войдут Dir1, myfile1, myfile2, myfile3, а также Dir2, file1 и file1.1, но не Dir3 или file2 и file3.

Использование µµ1µµ

Опция mindepth задает минимальную глубину до того, как find начнет возвращать результаты.

Пример 3:

Список всего в MyFiles/, начиная с 2 уровней в глубину .

find MyFiles/ -mindepth 2

Эта команда пропускает прямых детей MyFiles/ (таких как Dir1, myfile1, myfile2, myfile3) и перечисляет все, начиная с Dir2, file1, file1.1, и ниже.

Пример 4:

Найти файлы, начиная с 3 уровня в глубину.

find MyFiles/ -mindepth 3 -type f

Это перечислит file2 и file3, пропуская файлы и каталоги, расположенные менее чем на 3 уровня в глубину.

Комбинирование µµ0µµ и µµ1µµ

Вы можете комбинировать эти параметры для точной настройки глубины поиска.

Пример 5:

Список файлов, которые находятся ровно на 3 уровнях.

find MyFiles/ -mindepth 3 -maxdepth 3 -type f

Эта команда нацелена на файлы, которые находятся ровно на 3 уровнях, например file2 под Dir2. Обратите внимание, что file3 на самом деле находится на 4 уровне и не будет включен.

Поиск определенного файла или каталога

В предыдущих примерах мы рассмотрели поиск по всем файлам или каталогам. В этом разделе мы сосредоточимся на поиске отдельного файла или папки.

Найдите файл «file1» в корневом каталоге и на один уровень ниже (т. е. корень и один подкаталог):

find /path/to/directory/ -maxdepth 2 -name file1

Замените /path/to/directory/ своим собственным путем к каталогу.

Найдите файл «file2» в корневом каталоге и на два уровня ниже (т. е., корневой каталог, подкаталог уровня 2 и подкаталог уровня 3):

find /path/to/directory/ -maxdepth 3 -name file2

Найдите файлы с именем «file» между подкаталогами уровня 2 и 4 (т.е. начиная с подкаталога уровня 3 и заканчивая подкаталогом уровня 5):

find /path/to/directory/ -mindepth 3 -maxdepth 5 -name file

Найдите все файлы с именем «file3» во всех подкаталогах, начиная с корневого каталога:

find /path/to/directory/ -name file3

Не стесняйтесь адаптировать эти команды к своему случаю использования и изучить другие возможности, предоставляемые универсальной find командой!

Понимание опций mindepth и maxdepth с помощью простой аналогии

Если вы новичок, то использование опций maxdepth и mindepth может показаться вам немного запутанным. Вот простой способ запомнить эти опции:

Думайте о глубине как о расстоянии:

  • mindepth: Это как установка минимального расстояния перед началом подсчета или поиска. Это все равно что сказать: «Начинайте считать или искать только после того, как пройдете хотя бы на эту глубину.»
  • maxdepth: Это как установить максимальное расстояние, которое вы готовы пройти. Это все равно что сказать: «Прекратите считать или искать, как только заберетесь так глубоко».

Использование аналогии:

Представьте, что вы исследуете лес с несколькими слоями тропинок и дорожек. Каждый слой представляет собой различный уровень глубины:

  • глубина сознания: Прежде чем начать считать или исследовать, определите минимальную глубину, с которой вы готовы начать. Например, вы можете сказать: «Я буду считать или исследовать что-либо только после того, как углублюсь в лес как минимум на 2 слоя».
  • maxdepth: Вы также определяете максимальную глубину, на которую вы готовы пойти. Например, вы можете сказать: «Я не буду считать или исследовать ничего дальше 3 слоев в глубину леса.»

Сложим это вместе:

  • mindepth 2: Это означает, что вы начинаете считать или искать с того места, где вы находитесь как минимум на 2 слоя вглубь леса.
  • maxdepth 3: Это означает, что вы прекращаете считать или искать, как только достигаете 3 слоев в глубине леса.

Визуальное представление:

Forest (Root)
├── Layer 1
│   ├── Layer 2
│   │   ├── Layer 3
│   │   │   ├── Layer 4
│   │   │   └── Layer 4
│   │   └── Layer 3
│   ├── Layer 2
│   └── Layer 2
└── Layer 1

В этой аналогии с лесом вы можете настроить свое исследование, установив mindepth, чтобы определить, с чего начать, и maxdepth, чтобы определить, как глубоко вы готовы зайти.

Я надеюсь, что эта аналогия поможет сделать все более понятным!

Теперь давайте применим это к нашему примеру с каталогами:

Если вы хотите найти файлы, начиная с корневого каталога и спускаясь только на два уровня, используйте:

find /path/to/directory/ -maxdepth 2 -name<filename>

Если вы хотите найти файлы, начиная с уровня 3 и спускаясь до уровня 5, используйте:

find /path/to/directory/ -mindepth 3 -maxdepth 5 -name<filename>

Помните, maxdepth ограничивает глубину, а mindepth задает вашу начальную точку.

Счастливого исследования каталогов!

Заключение

Здесь мы научились искать файлы и каталоги в заданном диапазоне с помощью опций mindepth и maxdepth в команде find Linux, а также привели примеры.

На этих примерах вы можете увидеть, как опции maxdepth и mindepth позволяют точно контролировать глубину поиска в файловой системе, позволяя вам эффективно использовать определенные области структуры каталогов.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен ostechnix.com

Похожие статьи

Комментарии (0)