Я уже видел вопрос: Поиск подкаталогов во всех каталогах с одинаковым именем

Теперь моя структура каталогов:

$ find .

.
./4
./4/1
./2
./2/1
./5
./5/1
./1
./1/1
./3
./3/1

Я хочу перечислить все каталоги в конце с "1" в их названии:

./4/1
./2/1
./5/1
./1/1
./3/1

но я не хочу

./1

Я пробовал следующие команды:

find . -name "*1*"
find . -type d -path '*/1*'
find . -path '*/1*' -depth 2 -type d
find . -depth 2 -path '*/1*' -type d

ОБНОВИТЬ

find . -depth 2

выдает ошибку:

find: paths must precede expression: 2

Нашел мое решение

find -mindepth 2 . -type d -path "*1*"

Кто-нибудь может объяснить, почему -depth не работал, пока -mindepth работал?

1 ответ1

1

Ответ

find -mindepth 2 . -type d -path "*1*"

Объяснение найдено здесь

- Опция: -maxdepth уровни

Спускаться на большинстве уровней (неотрицательных целых) уровней каталогов ниже аргументов командной строки. «-maxdepth 0» означает только применять тесты и действия к аргументам командной строки.

- Опция: -минидепт уровни

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

- Опция: -глубина

Обработайте содержимое каждого каталога до самого каталога. Это хорошая идея при создании списков файлов для архивирования с помощью cpio или tar. Если каталог не имеет разрешения на запись для своего владельца, его содержимое все равно можно восстановить из архива, поскольку разрешения каталога восстанавливаются после его содержимого.

Я запутался между этими вариантами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .