51 lines
1.3 KiB
Bash
51 lines
1.3 KiB
Bash
|
#!/bin/bash
|
|||
|
|
|||
|
# 默认值
|
|||
|
FILE_DIR="."
|
|||
|
FILE_SUFFIXES="log"
|
|||
|
|
|||
|
# 解析命令行选项
|
|||
|
while getopts "d:s:h" opt; do
|
|||
|
case $opt in
|
|||
|
d)
|
|||
|
FILE_DIR=$OPTARG
|
|||
|
;;
|
|||
|
s)
|
|||
|
FILE_SUFFIXES=$OPTARG
|
|||
|
;;
|
|||
|
h)
|
|||
|
echo "$0 用于递归清理指定目录下的非当天日志文件,仅保留当日新生成或修改的日志文件" >&2
|
|||
|
echo "[-d 指定要清理的目录路径,默认当前路径]" >&2
|
|||
|
echo "[-s 指定后缀名清理对应的日志文件,多个后缀名用逗号隔开,默认后缀名 log]" >&2
|
|||
|
exit 0
|
|||
|
;;
|
|||
|
\?)
|
|||
|
echo "无效的选项: -$OPTARG" >&2
|
|||
|
exit 1
|
|||
|
;;
|
|||
|
:)
|
|||
|
echo "选项 -$OPTARG 需要一个参数." >&2
|
|||
|
exit 1
|
|||
|
;;
|
|||
|
esac
|
|||
|
done
|
|||
|
|
|||
|
# 检查目录是否存在
|
|||
|
if [ ! -d "$FILE_DIR" ]; then
|
|||
|
echo "错误:目录 '$FILE_DIR' 不存在。"
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
# 获取今天的日期,格式为YYYY-MM-DD
|
|||
|
TODAY=$(date +%Y-%m-%d)
|
|||
|
|
|||
|
# 将逗号分隔的后缀转换为数组
|
|||
|
IFS=',' read -r -a SUFFIX_ARRAY <<< "$FILE_SUFFIXES"
|
|||
|
|
|||
|
# 递归查找并删除非当天的日志文件(仅保留当日新生成或修改的文件)
|
|||
|
for SUFFIX in "${SUFFIX_ARRAY[@]}"; do
|
|||
|
find "$FILE_DIR" -type f -name "*.$SUFFIX*" ! -newermt "$TODAY" -exec rm -f {} \;
|
|||
|
done
|
|||
|
|
|||
|
echo "已完成清理,仅保留了$TODAY的日志文件。"
|