使用文件名中的日期格式删除早于 X 天的文件
Removing files older than X days using a date format in the filename
我有一个包含日志文件的目录,文件名中包含以下日期格式 (YYYY-MM-DD)。
app-2020-12-17.log.2
app-2020-12-18.log.1
app-2020-12-18.log.2
app-2020-12-18.log.31
app-2020-12-18.log.32
app-2020-12-18.log.33
app-2020-12-18.log.3.gz
app-2020-12-20.log.4.gz
app-2020-12-20.log.5
我的目标是删除所有早于 X 日期的文件(使用文件名中的日期作为比较)。例如,我想删除所有早于 2020-12-20 的文件,那么在操作之后我的文件夹中应该会留下以下文件:
app-2020-12-20.log.4.gz
app-2020-12-20.log.5
我怎样才能实现这种行为?我试过使用这样的东西 find app*log* -maxdepth 1 -mtime +1
,但这只能按修改日期查找文件,而不是我需要的方式。
使用 bash
和正则表达式:
for i in app-*.log*; do
[[ "$i" =~ -([0-9]{4}-[0-9]{2}-[0-9]{2}) ]] \
&& [[ "${BASH_REMATCH[1]}" < "2020-12-20" ]] \
&& echo rm -v "$i"
done
${BASH_REMATCH[1]}
包含 2020-12-17
,例如
作为一行:
for i in app-*.log*; do [[ "$i" =~ -([0-9]{4}-[0-9]{2}-[0-9]{2}) ]] && [[ "${BASH_REMATCH[1]}" < "2020-12-20" ]] && echo rm -v "$i"; done
输出:
rm -v app-2020-12-17.log.2
rm -v app-2020-12-18.log.1
rm -v app-2020-12-18.log.2
rm -v app-2020-12-18.log.31
rm -v app-2020-12-18.log.32
rm -v app-2020-12-18.log.33
rm -v app-2020-12-18.log.3.gz
我有一个包含日志文件的目录,文件名中包含以下日期格式 (YYYY-MM-DD)。
app-2020-12-17.log.2
app-2020-12-18.log.1
app-2020-12-18.log.2
app-2020-12-18.log.31
app-2020-12-18.log.32
app-2020-12-18.log.33
app-2020-12-18.log.3.gz
app-2020-12-20.log.4.gz
app-2020-12-20.log.5
我的目标是删除所有早于 X 日期的文件(使用文件名中的日期作为比较)。例如,我想删除所有早于 2020-12-20 的文件,那么在操作之后我的文件夹中应该会留下以下文件:
app-2020-12-20.log.4.gz
app-2020-12-20.log.5
我怎样才能实现这种行为?我试过使用这样的东西 find app*log* -maxdepth 1 -mtime +1
,但这只能按修改日期查找文件,而不是我需要的方式。
使用 bash
和正则表达式:
for i in app-*.log*; do
[[ "$i" =~ -([0-9]{4}-[0-9]{2}-[0-9]{2}) ]] \
&& [[ "${BASH_REMATCH[1]}" < "2020-12-20" ]] \
&& echo rm -v "$i"
done
${BASH_REMATCH[1]}
包含 2020-12-17
,例如
作为一行:
for i in app-*.log*; do [[ "$i" =~ -([0-9]{4}-[0-9]{2}-[0-9]{2}) ]] && [[ "${BASH_REMATCH[1]}" < "2020-12-20" ]] && echo rm -v "$i"; done
输出:
rm -v app-2020-12-17.log.2 rm -v app-2020-12-18.log.1 rm -v app-2020-12-18.log.2 rm -v app-2020-12-18.log.31 rm -v app-2020-12-18.log.32 rm -v app-2020-12-18.log.33 rm -v app-2020-12-18.log.3.gz