如何用Bash脚本的if-else语句监测目录每日新文件生成并通知?
实现Bash脚本判断当日文件是否生成并发送通知
完全可以通过Bash脚本的if-else语句实现这个需求,核心是判断目标目录中是否存在当日创建/修改的文件,以下是具体的条件写法和完整脚本:
核心逻辑说明
通过find命令精准匹配目录中当天的文件,结合grep判断是否有结果返回,以此作为if条件的判断依据。
完整脚本代码
x="/le/df/er" # 判断目录中是否存在今日生成的文件 if ! find "$x" -maxdepth 1 -type f -newermt "$(date +%Y-%m-%d)" ! -newermt "$(date +%Y-%m-%d) 23:59:59" | grep -q .; then (echo "File is not Generated Today.") | mailx -s "File not Saved today in $x" ******@gmail.com else echo "Save successful today" fi
条件部分解析
!:取反操作,当后续命令返回失败(即未找到今日文件)时,触发if块逻辑find "$x" -maxdepth 1 -type f:仅在目标目录(不递归子目录)中查找普通文件-newermt "$(date +%Y-%m-%d)":筛选修改时间晚于今日0点的文件! -newermt "$(date +%Y-%m-%d) 23:59:59":筛选修改时间不晚于今日23:59:59的文件,确保只匹配今日内的文件grep -q .:静默检查find命令是否有输出,只要有文件就返回成功,否则返回失败
补充说明
- 若文件的生成时间以创建时间而非修改时间为准,可将
-newermt替换为-newerct - 确保脚本执行用户有目标目录的读取权限,且
mailx工具已正确配置可发送邮件
内容的提问来源于stack exchange,提问作者Saumik Aich
相关产品推荐
相关产品推荐

