我正在尝试编写一个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
感谢您的帮助
答案 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
内修改了文件,则会打印特定文件。