我有如下要求:
我有两个目录: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
我认为这里最好的办法是看你是如何实际更新DIR2中的文件的。 而不是之后进行比较,使用像rsync这样的工具来进行复制。 例如,在rsync你可以运行这个命令:
rsync -auv --delete /path/to/dir1/* /path/to/dir2/
这会将dir1中较新的所有文件复制到dir2,并删除dir1中不存在的任何文件。 基本上它是一个可靠的文件夹“更新”,而不会浪费时间复制已经是最新的文件。
使用stat -c %Y /some/filename来获取stat -c %Y /some/filename的修改时间,然后可以用通常的方式进行比较。 另外考虑使用cp -u ,如果你想节省一点时间,它只复制一个更新的mtime的文件。