Найти путь к папкам, в которых нет определенной подпапки. - PullRequest
1 голос
/ 06 ноября 2019

Скажите, что у меня есть такая структура папок:

a/b/test/
a/b/c/test/
a/b/d/test/

Я хочу написать скрипт bash, который возвращает это:

a/b/test/
a/b/d/test/

В настоящее время я экспериментирую с find

find . -regex ".*/test" но это возвращает все.

find . -regex "[^c]" это ничего не возвращает

Я хочу что-то вроде find . -regex "(?!c)", но я не могу использовать обратные ссылки в bash

Я также мог бы сделать что-то вроде

if [[${pwd} == *"c"*]]; then
    dont include in output
fi

Но с этим последним примером я не совсем уверен, будет ли это совместимо как в Linux, так и в Windows, и / или если это "хороший" способ.

Как бы вы поступили?

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете использовать эту команду find:

find . -type d -path '*/test' -not -path '*/c/*'

find Подробности:

  • .: совпадение с текущим путем
  • -type d: только каталоги
  • -path '*/test': Совпадают пути с /test в конце
  • -not -path '*/c/*': но нигде нет /c/в середине
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...