如何比较两个不同目录中同一文件的时间戳

如何比较两个不同目录中同一文件的时间戳

我有如下要求:

我有两个目录:DIR1 和 DIR2。DIR1 的文件会根据需要定期更新。然后更新的文件会复制到 DIR2。所以我需要编写一个 shell 脚本来告诉我们 DIR2 中的所有文件是否都是更新的文件。这是为了确保所有必需的文件都已从 DIR1 正确复制到 DIR2。

谁能帮我比较两个目录之间文件的时间戳。

/home/user/DIR1]ls -l
-rwxrwxr-x   1 user  group          509 Jan 08 2009 file_1.dat 
-rwxrwxr-x   1 user  group           11 Sep 29 12:19 file_2.dat

/home/user/DIR2]ls -l
-rwxrwxr-x   1 user  group          509 Jan 08 2008 file_1.dat 
-rwxrwxr-x   1 user  group           40 Oct 21 12:19 file_2.dat

谢谢和问候,Prasenjit

答案1

我认为这里最好的方法是查看您实际上是如何更新 DIR2 中的文件的。与其事后比较它们,不如使用类似工具rsync进行复制。例如,rsync您可以运行以下命令:

rsync -auv --delete /path/to/dir1/* /path/to/dir2/

这会将 dir1 中所有较新的文件复制到 dir2,并删除 dir1 中不再存在的所有文件。基本上,这是一个可靠的文件夹“更新”,无需浪费时间复制已经更新的文件。

答案2

使用stat -c %Y /some/filename来获取文件的修改时间,然后可以按常规方式进行比较。cp -u如果您想节省一点时间,也可以考虑使用 ,它只复制修改时间较新的文件。

相关内容