将多个文件移动到不同目录的Shell脚本

将多个文件移动到不同目录的Shell脚本,shell,command-line,Shell,Command Line,我有两个网站的子域和两个帐户中的一个文件夹有几个子文件夹。这是一个照片文件夹。在dirA.xyz.com中,照片文件夹由多个文件夹和子文件夹组成,而在dirB.xyz.com中,照片文件夹由dirA中不可用的新照片组成。但dirA photo文件夹中的子文件夹名称可能与dirB photo文件夹相同,但图像的最终名称将不同。所以我想将dirB photo文件夹的所有文件移动到dirA photo文件夹,而不删除dirA photo文件夹数据 由于名称和文件夹结构各不相同,且数据以百万计,如何移动

我有两个网站的子域和两个帐户中的一个文件夹有几个子文件夹。这是一个照片文件夹。在dirA.xyz.com中,照片文件夹由多个文件夹和子文件夹组成,而在dirB.xyz.com中,照片文件夹由dirA中不可用的新照片组成。但dirA photo文件夹中的子文件夹名称可能与dirB photo文件夹相同,但图像的最终名称将不同。所以我想将dirB photo文件夹的所有文件移动到dirA photo文件夹,而不删除dirA photo文件夹数据

由于名称和文件夹结构各不相同,且数据以百万计,如何移动和合并它们以保留所有数据

我试过用拉链。我压缩了dirB的照片文件夹,将其移动到dirA并尝试解压,但它不在dirA照片文件夹中,而是在dirB照片文件夹中。我尝试将dirB照片文件夹的所有者更改为dirA所有者,但也没有成功。唯一起作用的是move命令,那么如何使用mv实现这一点呢


所有文件都是jpeg或png。

听起来您需要
rsync
,带有合并选项,而不是覆盖。如果您使用的是最新版本的linux,那么默认情况下应该安装rsync

来源:/home/xyz/public_html/photo/ABC/Something/Something/xyz.jpg
目标:/home/ABCDE/public_html/photo/ABC/Something/Something/xyz.jpg

rsync -avibu --ignore-existing /home/xyz/public_html/photo/ /home/ABCDE/public_html/photo
在这个命令中,我随机选择了顶层目录。您可能需要根据需要进行修改。还要注意源和目标上的尾随“/”。否则,文件的放置可能会导致目录关闭

-b生成存在于两个文件夹中的rsync备份文件,并将~附加到旧文件中。您可以使用您选择的--suffix string\u更改~suffix
-u makes rsync transfer跳过目标中比源中更新的文件

请参阅我所做的更新,对于move命令,如果要覆盖目标上的文件,它将起作用
rsync -avibu --ignore-existing /home/xyz/public_html/photo/ /home/ABCDE/public_html/photo