布尔检查是否在过去一小时内打开了文件

时间:2016-12-08 15:51:26

标签: bash

我正在尝试编写一个crontab来检查某个指定的目录,并检查这些文件是否超过一个小时。

!#/bin/bash
for F in /My/Path/*.txt;do
    if [ ***TEST IF FILE WAS OPENED IN THE PAST HOUR *** ] 
        then 
          echo "$F"
        fi
    done

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

这可以通过简单的查找

来完成
find /path/to/directory -type f -newermt "1 hours ago"

过去一小时内访问/修改的所有文件都将打印到标准输出。无需循环和打印。

#/bin/bash
OLD_FILES=$(find /path/to/directory -type f -newermt "1 hours ago")
if [[ -n $OLD_FILES ]]; then
    echo "$OLD_FILES" 
else 
    echo "No old files found in dir"
fi

如果您正在尝试编译列表

,您始终可以将结果通过管道传输到日志文件中
find /path/to/directory -type f -newermt "1 hours ago" >> $yourLogFile

答案 1 :(得分:0)

使用GNU date的更严格的方法,它有一个选项-r

-r, --reference=FILE
       display the last modification time of FILE

使用上述内容,并入您的脚本

#!/bin/bash
for filename in /My/Path/*.txt ; do
    if (( (($(date +%s) - $(date -r "$filename" +%s))/60) <= 60 )); then
        echo "$filename"
    fi
done

逻辑是直截了当的,我们通过用当前时间减去文件的修改EPOCH来获得文件修改时间(以分钟为单位)。如果在60 minutes内修改了文件,则会打印特定文件。