gpt4 book ai didi

bash - 使用 bash 过滤文件名

转载 作者:行者123 更新时间:2023-11-29 09:38:50 25 4
gpt4 key购买 nike

我有一个充满日志文件的目录,格式为

${name}.log.${year}{month}${day}

他们看起来像这样:

logs/
production.log.20100314
production.log.20100321
production.log.20100328
production.log.20100403
production.log.20100410
...
production.log.20100314
production.log.old

我想使用 bash 脚本过滤掉所有早于 x 个月的日志并将其转储到 *.log.old

X=6  #months

LIST=*.log.*;
for file in LIST; do
is_older = file_is_older_than_months( ${file}, ${X} );
if is_older; then
cat ${c} >> production.log.old;
rm ${c};
fi
done;

如何获取所有早于 x 个月的文件?以及...如何避免 *.log.old 文件包含在 LIST 属性中?

最佳答案

以下脚本需要安装 GNU 日期。您可以在包含日志文件的目录中调用它,第一个参数是月数。

#!/bin/sh

min_date=$(date -d "$1 months ago" "+%Y%m%d")

for log in *.log.*;do
[ "${log%.log.old}" "!=" "$log" ] && continue
[ "${log%.*}.$min_date" "<" "$log" ] && continue
cat "$log" >> "${log%.*}.old"
rm "$log"
done

关于bash - 使用 bash 过滤文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com