我想将一组文件从目录A复制到目录B,但需要注意的是,如果目录A中的文件与目录B中的文件相同,则不应复制该文件(因此,修改时间不应为更新)。有没有办法用现有工具来做到这一点,而无需编写自己的脚本来做到这一点?
详细说明一下用例:我正在自动生成.c
临时目录中的一堆文件(通过必须无条件生成所有文件的方法),当我重新生成它们时,我只想复制已更改到实际源目录的文件,保持不变(保留其旧的创建时间),以使他们make
知道不需要重新编译它们。(.c
不过,并非所有生成的文件都是文件,因此我需要进行二进制比较而不是文本比较。)
(附注:这个增长我问的问题出https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762,我在那里试图为了加快我用来执行此操作的脚本文件的速度,但是我想到我真的应该问,是否有比编写自己的脚本更好的方法了—尤其是因为任何简单的方法都可以在shell中执行脚本会cmp
在每对文件上调用类似的代码,并且启动所有这些进程都需要很长时间。)
rsync -avnc
或漫长的路rsync --archive --verbose --dry-run --checksum
。
diff -qr dirA dirB
分别查看dirA
和和唯一的文件dirB
。