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

Copying multiple directories into multiple destination directories

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

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

在尝试了最初的 cp 解决方案后,我意识到它只适用于一个目的地,所以我尝试了几个循环,但我无法让它们中的任何一个工作。

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

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

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

的 globbing 会很稳健

希望对您有所帮助。