2017-05-29 141 views
-1

给定源文件路径和目标路径。如何编写一个shell脚本将源文件复制到目标目录的所有文件夹中?在目录的所有文件夹中复制文件

+3

你可以添加一些细节/例子,澄清你想要什么? (我问,因为codeforester清楚地解释你的问题不同于我。) – ruakh

+0

@ruakh:我的编辑出了什么问题?我遵循这里的指导:https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/ – codeforester

+3

@codeforester:你改变标题问你想问的问题,而不是这个问题似乎在OP的想法中。您正在考虑制作该文件的一个副本。 OP似乎希望在目标目录的每个子目录中都有该文件的副本,因此如果有20个子目录,则会有20个副本 - 每个子目录一个。现在,这可能只是一个使用英语的问题,但表面问题似乎是这样 - 而你的回答没有解决它。现在,我可能是错的。鲁阿克可能已经有了另一个含义。 OP需要澄清! –

回答

2

您不需要脚本。使用cp -R递归副本:

cp -R source_path dest_path 

要进行递归复制,同时保留文件属性,如最后修改时间等,使用-p选项,以及:

cp -Rp source_path dest_path 

man cp

-R 

如果source_file指定一个目录,cp会复制目录并整个子树连接在那个点上。如果 source_file以/结尾,则该目录的内容被复制 而不是目录本身。该选项还会导致符号链接被复制,而不是通过间接链接,并且对于cp到 创建特殊文件而不是将它们作为普通文件复制。 创建的目录与相应的源目录 目录具有相同的模式,未由进程'umask修改。

0

听起来好像你想将单个文件复制到目标目录下的所有子目录(以及目标目录本身)。如果这是正确的,那么:

find $targetdir -type d -exec cp $sourcefile {} \; 
相关问题