2016-08-12 6 views
0

У меня есть следующий сценарий Баш:Копирование найден каталог на пути построен с использованием указанного аргумента и нашел каталог

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/{}, но это дает прямой слэш слишком много, что делает путь содержит //, который, очевидно, не так.

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

ответ

0

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

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