将多个目录复制到多个目标目录

时间:2019-11-27 04:35:30

标签: bash for-loop directory cp

在我的基本目录中,我希望将三个目录复制到我的基本目录中的其他目录中。看起来像这样:

https://sb234.net/#!/

我希望复制这三个,所以结构如下:

base
|-Dir1
|-Dir2
|-Dir3
|-Dir4
.
.
.
|-foo
|-bar
|-mar

我有四个以上的目录,因此为什么要尝试创建一种以编程方式复制它们的方法。我尝试了以下操作均无济于事:

base
|-Dir1
    |-foo
    |-bar
    |-mar
|-Dir2
    |-foo
    |-bar
    |-mar
|-Dir3
    |-foo
    |-bar
    |-mar
|-Dir4
    |-foo
    |-bar
    |-mar
.
.
.
|-foo
|-bar
|-mar

尝试了最初的cp -avr ./{foo,bar,mar}/ ./Dir{1,2,3,4} for file in `find . -type d -name ./Dir*/`; do (cd "$file" && cp ../{foo,bar,mar}/ .); done 解决方案后,我意识到它仅适用于单个目的地,因此我尝试了几次循环,但我无法使它们起作用。

1 个答案:

答案 0 :(得分:0)

你快到了。
请您尝试以下操作:

for d in base/Dir*; do
    cp -av base/{foo,bar,mar} "$d"
done

请注意,如果路径名包含空格,制表符或换行符,for file in `find ..`可能会中断。将Dir*与globing结合使用会很可靠。

希望这会有所帮助。