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



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

代码
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')"

最新更新