将多个目录复制到多个目标目录
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 会很稳健
希望对您有所帮助。
在我的基本目录中,我希望将三个目录复制到我的基本目录中的其他目录中。它看起来像这样:
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*
.
希望对您有所帮助。