【问题标题】:BASH script to compare two directories & copy contents into a third directory?用于比较两个目录并将内容复制到第三个目录的 BASH 脚本?
【发布时间】:2010-01-18 03:40:10
【问题描述】:

基本上,我正在尝试将 dir1 和 dir2(不包括子目录)的内容复制到 dir3 中。需要注意的是,如果 dir1 和 dir2 中都存在一个文件,我需要复制较新的文件。假设更新的文件存在于 dir2 中。

我有:

find dir1 -type f -exec cp {} dir3 \;
find dir2 -type f -exec cp -u {} dir3 \;

这样做会导致这个问题:由于 dir1 中的文件在 dir2 之前复制,因此 dir1 中的所有文件(现在位于 dir3 中)都被认为是较新的,不会被覆盖。

我认为您必须在 dir1 中处理一个文件,检查它是否存在于 dir2 中,然后检查哪个较新。但是我不知道该怎么做,除了你可以使用“-nt”。我在想我只是以错误的方式解决这个问题。

【问题讨论】:

    标签: bash unix


    【解决方案1】:
    cp -vfudp dir1/* dir3/
    cp -vfudp dir2/* dir3/
    

    【讨论】:

    • 啊,所以 -p 会保持 dir1 中的时间戳正确吗?
    • 是的,preserve的p会保留一堆东西,见:man cp
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多