Переименование шаблонов, сопоставляющих несколько каталогов

Я хотел бы переименовать все каталоги под именем basedir, которое соответствует имени. Например:

В basedir/ у меня есть:

- foo/bar/blah
- my/bar/foo
- some/bar/foo1
- other/foo/bar

Я хотел бы переименовать все каталоги, соответствующие bar, но я бы хотел сохранить префиксную часть.

С find я могу легко составить список всех таких каталогов:

find . -name repositoryunit -type d

Однако, как я могу использовать -exec mv {} ... (или, возможно, комбинировать с другим приложением), чтобы префикс был сохранен?

Большое спасибо заранее!

Ответ 1

find . -name bar -type d -execdir mv {} baz \;

-execdir изменяет каталог родительскому элементу перед выполнением команды, поэтому mv здесь будет локальным для каждого родительского каталога.