繁体   English   中英

如何将不同的内容文件从一个目录复制到另一个目录?

[英]How do I copy differing content files from one directory to another?

存在两个目录: a/b/
我想将所有文件(递归地)从a/复制到b/
但是,我只想复制a文件,如果它的内容不同于已经存在的b文件。 如果相应的b文件不存在,那么您仍将复制a文件。

*“对应文件”指的是具有相同名称和来自其父目录的相对路径的文件。

注意:我不想覆盖具有完全相同内容的b文件的原因是因为b目录正被另一个程序监视,并且我不希望文件日期更改而导致该程序执行更多工作超出要求。

我实质上是在寻找一种在每个文件上执行差异检查时执行cp -rf a/ b/ 如果文件不同,请执行复制;否则,请执行以下操作。 否则跳过副本。

我看到cp有一个更新标志:

   -u, --update
          copy only when the SOURCE file is newer than the destination  file  or  when  the
          destination file is missing

但这不起作用,因为我不关心较新的文件; 我担心文件内容不同。

任何外壳语言都可以。
我一直在尝试通过将diff检查注入到find命令中来使其工作:

find a/ ??? -exec cp {} b \;

在两个目录之间执行此操作似乎并不罕见,因此我希望有一种优雅的命令行解决方案,这使我不得不编写python脚本。

您可以使用rsync实现此目的。 仅当源文件夹中有任何新更新时,文件或目录才会更新。

$rsync -av --progress sourcefolder destinationfolder

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM