【shell脚本编程】-7 寻找到在5分钟内改动的文件
文章目录
- 1、脚本要求
- 2、脚本编写
- 3、脚本解释
- 4、脚本总结
1、脚本要求
- 有一台服务器作为web应用,有一个目录自定义
- 不定时地会被用户上传新的文件,但是不知道什么时候会上传
- 所以需要每五分钟检测一次是否有新文件生成
- 写一个shell脚本完成检测
- 检测完成之后若是有新文件,需要将新文件地列表输出到一个按年、月、日、时、分为名字的日志里
- 注意每隔五分钟检测一次
2、脚本编写
#!/bin/bashd=`date +%y%m%d%H%M`
basedir=/data/web/attachementfind $basedir/ -type f -mmin -5 > /tmp/newf.txtif [ -s /tmp/newf.txt ];then/bin/mv /tmp/newf.txt /tmp/$d
fi
编写完成之后再加上定期执行任务的工具
3、脚本解释
#!/bin/bashd=$(date +%y%m%d%H%M)
#使用date命令获取当前时间,并按照%y%m%d%H%M格式(两位年份 + 月份 + 日期 + 小时 + 分钟,例如2508201645代表 2025 年 8 月 20 日 16 点 45 分)格式化。basedir=/data/web/attachement
#定义变量basedir,指定要查找文件的根目录为/data/web/attachement。
find $basedir/ -type f -mmin -5 > /tmp/newf.txt
#使用find命令在$basedir目录下查找文件:
#-type f:只查找普通文件(排除目录、链接等)。
#-mmin -5:只匹配最近 5 分钟内修改过的文件(-mmin表示按分钟计算修改时间,-5表示 5 分钟以内)。
#将查找结果(符合条件的文件路径)通过>重定向到/tmp/newf.txt临时文件中。
if [ -s /tmp/newf.txt ];then
#条件判断:-s /tmp/newf.txt检查/tmp/newf.txt是否存在且不为空(即是否找到了符合条件的文件)。
#如果条件成立(文件非空),则执行then后的命令。
#/bin/mv /tmp/newf.txt /tmp/$d
#当/tmp/newf.txt非空时,使用mv命令将其移动(重命名)到/tmp目录下,新文件名为变量d的值(即步骤 2 中获取的时间字符串)。
#目的是用时间戳保存这次查找的结果,避免被下次执行覆盖
4、脚本总结
这个脚本的作用是定期检查/data/web/attachement目录下最近 5 分钟内有更新的文件,若存在此类文件,则用当前时间命名并保存文件列表到/tmp目录,方便后续查看最近更新的文件记录。