Копирование найденного каталога в путь, созданный с использованием указанного аргумента и найденного каталога

У меня есть следующий скрипт bash:

cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} $1{} \;

Идея состоит в том, чтобы найти все папки с именем doc под folder1 а также folder2 и копирование структуры, начиная с root_folder к пути, который указан аргументом пользователя (вместе со всем содержимым doc).

Так например

root_folder/folder1/other_folder/doc

будет выглядеть так:

$1/folder1/other_folder/doc

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

cp: with --parents, the destination must be a directory
Try `cp --help' for more information.

Это несмотря на то, что 1) я заверил, что указанная папка существует заранее, и 2) если я выведу полный путь для копирования, он будет выглядеть точно так, как должен, т.е. $1/folder1/other_folder/doc,

Я также попытался добавить / после $1 делать $1/{}, но это дает слишком много косой черты, в результате чего путь содержит // что явно не так.

Что мне здесь не хватает?

1 ответ

Решение

Ответ был добавлением dirname к пути назначения:

cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} `dirname $1/{}` \;
Другие вопросы по тегам