修改时间以检查文件是否在最近24小时内被修改

时间:2020-02-06 22:40:23

标签: linux bash

<td>

我正在尝试通过将atime与Ltime进行比较来检查文件在最近24小时内是否已被修改

atime总是小于ltime

所以我可以修改语句

#!/bin/bash

cd /home/pi/cc/uvreadings

while true
do
   ATIME=`stat -c %Z /home/pi/cc/uvreadings/uvreadings.log`

   if [[ "$ATIME" < "$LTIME" ]]
   then
       echo "log file not updated for +24 hours"
   else
       echo "log file WAS updated in last +24 hours"
   fi

   sleep 10
done

if [[ "$ATIME" < "$LTIME" ]]

of是实现这一目标的更好方法

感谢您的任何建议

1 个答案:

答案 0 :(得分:0)

首先,文件上(至少)有three different timestamps,而且您似乎把它们混在一起了。您谈论时间,%Z选项却给您ctime,听起来您想要的实际上是mtime:文件内容上次更改的时间。您可以使用stat -c %Y获取mtime。

要查看是否少于一天,可以添加一天。但是时间以秒为单位,因此您需要增加24*60*60秒。最简单的方法可能是使用arithmetic expansion。看起来可能像这样:

if [[ $((MTIME + (24 * 60 * 60))) > $LTIME ]] # modified in the last day

我假设您编写了获取当前时间并将其存储在LTIME中的代码,即使您未在问题中显示该代码也是如此。当然,它必须进入循环。做到这一点的一种方法是

LTIME=`date +%s`