将找到的目录复制到使用指定参数和找到的目录构建的路径
Copying found directory to path built using specified argument and found directory
我有以下 bash 脚本:
cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} {} \;
思路是找到folder1
和folder2
下所有名为doc
的文件夹,复制从root_folder
开始的结构到用户指定的路径参数(以及 doc
的所有内容)。
例如
root_folder/folder1/other_folder/doc
变成:
/folder1/other_folder/doc
只要我没有让用户指定要复制到的文件夹,即如果我没有 </code>,这个脚本就可以工作。但是,当我确实拥有它时,出现错误:</p>
<pre><code>cp: with --parents, the destination must be a directory
Try `cp --help' for more information.
尽管 1) 我已经确保指定的文件夹事先存在,并且 2) 如果我输出要复制到的完整路径,它看起来完全正确,即 /folder1/other_folder/doc
。
我也试过在 </code> 之后添加一个 <code>/
来生成 /{}
,但是这样正斜杠太多了,使得路径包含 //
这是明显错了
我在这里错过了什么?
答案是将 dirname
添加到目标路径:
cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} `dirname /{}` \;
我有以下 bash 脚本:
cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} {} \;
思路是找到folder1
和folder2
下所有名为doc
的文件夹,复制从root_folder
开始的结构到用户指定的路径参数(以及 doc
的所有内容)。
例如
root_folder/folder1/other_folder/doc
变成:
/folder1/other_folder/doc
只要我没有让用户指定要复制到的文件夹,即如果我没有 </code>,这个脚本就可以工作。但是,当我确实拥有它时,出现错误:</p>
<pre><code>cp: with --parents, the destination must be a directory
Try `cp --help' for more information.
尽管 1) 我已经确保指定的文件夹事先存在,并且 2) 如果我输出要复制到的完整路径,它看起来完全正确,即 /folder1/other_folder/doc
。
我也试过在 </code> 之后添加一个 <code>/
来生成 /{}
,但是这样正斜杠太多了,使得路径包含 //
这是明显错了
我在这里错过了什么?
答案是将 dirname
添加到目标路径:
cd root_folder && find folder1 folder2 -name "doc" -exec cp -r --parents {} `dirname /{}` \;