2013-02-10 53 views
31

我工作的一个微小的下拉框状的bash脚本,我怎么可以比较两个文件的日期,并取代旧的(S)与新的不使用rsync的 有什么处理这个简单的方法? 可以通过SHA1帮助我了解更新吗?比较文件的日期庆典

+0

这实际上取决于你的意思是“文件的日期”。你可能指的是'mtime',但特异性很好。 – 2013-02-10 21:32:58

+0

@WilliamPursell,最后一次修改我的意思是 – 2013-02-10 21:34:48

回答

72

您可以test比较文件的修改时间,使用-nt(比新)和-ot(比老)运营商:

if [ "$file1" -ot "$file2" ]; then 
    cp -f "$file2" "$file1" 
fi 
+5

这真棒:)))从来没有想过简单的比较可以做这项工作,因为我是新来的centOS :) 谢谢你:) – 2013-02-10 21:41:51

+0

-nt似乎意味着比同龄人更新。 – 2015-01-06 16:23:00

+0

@JoeC我测试过了,如果同一个年龄返回1('touch -r ...'之后) – 2015-02-06 18:31:58

2

怎么样

stat file|awk -F': ' '/Modify: /{print $2}' 
+0

这一次帮助我完成了我想要完成的任务。现在,如何比较这些时间?我使用在这里找到的答案:http://stackoverflow.com/questions/8116503/how-to-compare-two-datetime-strings-and-return-difference-in-hours-bash-shell完美! – harperville 2013-12-31 16:11:45

2

或者更短,更加好,看at man stat

stat -c %y file 
4

这是一个POSIX解决方案:

find -name file2 -newer file1