我有如下要求:
我有两个目录: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
如果您想节省一点时间,也可以考虑使用 ,它只复制修改时间较新的文件。