比较文件的日期 bash
Posted
技术标签:
【中文标题】比较文件的日期 bash【英文标题】:compare file's date bash 【发布时间】:2013-01-26 00:05:24 【问题描述】:我正在开发一个类似于 Dropbox 的小型 bash 脚本,如何在不使用 rsync 的情况下比较 2 个文件的日期并用新文件替换旧文件 有什么简单的方法来处理这个吗? SHA1 可以帮助我了解更新吗?
【问题讨论】:
这真的取决于“文件日期”的含义。您可能指的是mtime
,但特异性很好。
@WilliamPursell,我的意思是最后一次修改
作为记录,SHA1 绝对不会透露任何有关文件年龄、名称或内容的信息。
【参考方案1】:
您可以使用-nt
(新于)和-ot
(旧于)运算符比较文件修改时间与test
:
if [ "$file1" -ot "$file2" ]; then
cp -f "$file2" "$file1"
fi
【讨论】:
太棒了 :))) 从来没有想过简单的比较可以完成这项工作,因为我是 centOS 的新手 :) 谢谢你 :) -nt 似乎意味着比年龄新或相同。 @JoeC 我测试过,如果相同年龄返回 1(touch -r ...
之后)
"$file1" not present 意味着 true / cp ... ?【参考方案2】:
这是一个 POSIX 解决方案:
find -name file2 -newer file1
【讨论】:
【参考方案3】:或者更短更好看,看man stat
:
stat -c %y file
【讨论】:
自纪元以来使用 %Y 秒,更容易使用。 不过,这不是便携式的。 POSIXstat
有一组相当令人沮丧的选项。
对于遇到此问题的其他人:如果FILE
是指向另一个文件的符号链接,则stat -c %Y FILE
将输出符号链接的最后修改日期,不是链接指向的文件。在这种情况下使用stat -L -c %Y FILE
。【参考方案4】:
怎么样
stat file|awk -F': ' '/Modify: /print $2'
【讨论】:
这个帮助我完成了我想要完成的工作。现在,如何比较那些时代?我正在使用这里找到的答案:***.com/questions/8116503/…Perfect!以上是关于比较文件的日期 bash的主要内容,如果未能解决你的问题,请参考以下文章