Копирование найденного каталога в путь, созданный с использованием указанного аргумента и найденного каталога
У меня есть следующий скрипт 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/{}` \;