用于将多个文件移动到其他目录的Shell脚本

时间:2014-04-26 16:22:45

标签: shell command-line

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

由于名称和文件夹结构各不相同,数据以百万为单位如何移动和合并以便所有数据都保留?

我尝试过使用zip。我将dirB的照片文件夹压缩,将其移动到dirA并尝试解压缩但是它没有进入dirA照片文件夹,它会进入dirB照片文件夹。我尝试将dirB照片文件夹的所有者更改为dirA所有者,但它也无法正常工作。唯一有效的是move命令,那么如何用 mv 来实现这个目的呢?

 mv /home/xyz/public_html/photo/ABC/Something/something/xyz.jpg  /home/ABCDE/public_html/photo/ABC/Something/something/xyz.jpg 

所有文件都是jpeg或png。

1 个答案:

答案 0 :(得分:0)

听起来你需要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_of_your_choice更改〜后缀 -u使rsync传输跳过目标比源中的文件更新的文件