Bash 将文件递归复制到所有子域文件夹

Bash 将文件递归复制到所有子域文件夹,bash,shell,unix,scripting,Bash,Shell,Unix,Scripting,在我的服务器上,我有x个子域 它们的文件夹名称如下所示: example1.mydomain.com , example2.mydomain.com, examplex.mydomain.com 它们都存在于一个地方 我正在尝试编写一个简单的bash脚本,将文件夹源中的所有文件夹和文件复制到所有这些子域文件夹(并替换现有文件夹) 换句话说,我想将文件从源文件复制到名为*.mydomain.com的任何文件夹 我尝试了rsync,但无法执行*.mydomain部分您可以使用find命令搜索所有

在我的服务器上,我有x个子域 它们的文件夹名称如下所示:

example1.mydomain.com , example2.mydomain.com,  examplex.mydomain.com
它们都存在于一个地方

我正在尝试编写一个简单的bash脚本,将文件夹源中的所有文件夹和文件复制到所有这些子域文件夹(并替换现有文件夹)

换句话说,我想将文件从源文件复制到名为*.mydomain.com的任何文件夹


我尝试了rsync,但无法执行*.mydomain部分

您可以使用find命令搜索所有文件,然后使用此输出复制它们,例如,假设您正在/home中搜索并复制到/target

    find /home -name "*.mydomain.com" -exec cp -r {} /target/  \;
但我看到的上述解决方案中的一个问题是,它可能会找到具有这些名称的文件/文件夹,并复制它们(不确定它是否会保持相同的文件夹层次结构),也许如果您只查找文件夹,请尝试下面的方法

    find /home -name "*.mydomain.com" -type d -exec cp -r {} /target/  \;
我建议:

for i in *.mydomain.com; do rsync -aSv "SOURCE/" "$i"; done

源代码后面的尾随
/
很重要。

在*.mydomain.com中使用rsync时,具体是什么问题?
用于i;执行rsync-aSv“SOURCE/”“$i”;完成
?@Cyrus正在检查now@Cyrus非常感谢你的帮助,我没有使用for,你能把它作为一个答案吗?这个副本不应该从*.mydomain.com复制到我想复制到的地方吗?我想这应该可以,据我所知,“find”将查找的文件列表将替换为{},因此,您的命令如下所示,cp-r*1.mydomain/target/