linux 按时间删除历史日记,只保留最近3个月以备查询问题,以下是完整脚本。
#!/bin/bash
# 指定日志文件所在的目录
log_directory="/var/logs"
# 获取当前日期并计算三个月前的日期
current_date=$(date +%Y%m%d)
#这里是只保留最近3个月,可以根据实际业务更改时间
three_months_ago=$(date -d "3 months ago" +%Y%m%d)
# 遍历日志目录中的文件
for file in $log_directory/*; do
# 获取文件的最后修改时间
modified_time=$(stat -c %Y "$file")
# 将最后修改时间转换为日期格式
modified_date=$(date -d "@$modified_time" +%Y%m%d)
# 检查修改时间是否在最近三个月内
if [[ $modified_date -ge $three_months_ago && $modified_date -le $current_date ]]; then
# 保留文件
echo "保留文件: $file"
else
# 删除文件
rm "$file"
echo "删除文件: $file"
fi
done