2010-01-18 99 views
1

基本上我试图将dir1和dir2(不包括子目录)的内容复制到dir3中。需要注意的是,如果dir1和dir2中都存在一个文件,我需要复制较新的文件。可以说,新文件存在于dir2中。BASH脚本比较两个目录并将内容复制到第三个目录中?

我:

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

这样做,这样会导致这样的问题:由于从DIR1的文件DIR2之前复制从DIR1的所有文件(即现在在DIR3)被认为是新的,而韩元不会被覆盖。

我在想你必须在dir1中处理一个文件,检查它是否存在于dir2中,然后检查哪个更新。但我不知道如何做到这一点,除此之外,你可以使用“-nt”。我在想,我只是以这种错误的方式去做。

回答

3
cp -vfudp dir1/* dir3/ 
cp -vfudp dir2/* dir3/ 
+0

啊,so -p会保留它在dir1中的时间戳是否正确? – kevin 2010-01-18 03:54:26

+0

是的,保留的p将保留一堆东西,请参阅:man cp – Don 2010-01-19 05:04:01

相关问题