繁体   English   中英

比较文件的最后修改日期和 shell 脚本中的当前日期

[英]Comparing last modified date of a file and current date in shell script

如果先前创建的文件的最后修改日期小于当前日期,我正在尝试创建一个新文件。 下面是我试过的代码,但不确定上次修改日期和当前日期之间的差异值是多少。

代码

LAST_MODIFIED_DATE=$(stat -c %y ${APPDIR}/data/XYZ.csv)
    echo "LAST_MODIFIED_DATE ${LAST_MODIFIED_DATE}"
    NOW=$(date +%s)
    echo "NOW ${NOW}"
    let diff=${NOW}-${LAST_MODIFIED_DATE}
    echo "Diff ${diff}"

结果

LAST_MODIFIED_DATE 2021-08-03 10:30:56.627022878 -0500
NOW 1629354883
Diff 1629354883-2021-08-03 10:30:56.627022878 -0500

您应该首先转换自 1970-01-01 以来以秒为单位的LAST_MODIFIED_DATE

NOW="$(date +%s)"
LAST_MODIFIED_DATE="$(stat -c %y ${APPDIR}/data/XYZ.csv)"
LAST_MODIFIED_DATE_EPOCH="$(date +%s --date="$LAST_MODIFIED_DATE")"

diff=$(($NOW - $LAST_MODIFIED_DATE_EPOCH))
echo "Diff ${diff}"

但是diff将始终为正,除非文件${APPDIR}/data/XYZ.csv是使用将来的日期创建的。

如果你想针对不同的日期进行测试(例如检查文件是否在过去一小时内创建),你可以修改NOW的定义:

NOW="$(date +%s --date '1 hour ago')"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM