将多个文件从一个目录复制到多个其他目录

时间:2015-07-24 14:10:45

标签: bash for-loop ls xargs cp

我有一个目录结构

Dir_1
Dir_2
Dir_3
Source

。目录Source包含文件File_1.txtFile_2.txt

我想将目录Source中的所有文件复制到所有剩余目录,在本例中为Dir_1Dir_2Dir_3

为此,我使用了

for i in $(ls -d */ | grep -v 'Source'); do echo $i | xargs -n 1 cp ./Source/*; done

。但是,我继续收到消息

cp: target ‘5’ is not a directory

似乎cp在其中包含空格的目录名称存在问题。我如何解决这个问题(显然,保留目录名称中的空格)?

1 个答案:

答案 0 :(得分:2)

使用find你可以这样做:

find . -mindepth 1 -maxdepth 1 -type d ! -name Source -exec cp Source/*.txt {} \;

此命令在当前目录中搜索一级深度的所有子目录,不包括Source,然后将文本文件复制到每个子目录中。

希望这会有所帮助:)