【问题标题】:Shell script to move several files to a different directory用于将多个文件移动到不同目录的 Shell 脚本
【发布时间】:2014-04-26 16:22:45
【问题描述】:

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

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

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

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

所有文件均为 jpeg 或 png。

【问题讨论】:

    标签: shell command-line


    【解决方案1】:

    听起来你需要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 传输跳过目标中比源中新的文件

    【讨论】:

    • 请查看我所做的更新,对于移动命令,如果您想覆盖目标目的地上的文件,它将起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2015-07-19
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多