Logrotate和Shell脚本

时间:2012-10-29 19:08:44

标签: shell logrotate

给出如下标记的目录中的日志文件:

log_from_2012_08_14-11:57:21_To_2012_09_14-11:56:12.zip
log_from_2012_10_14-11:57:21_To_2012_11_14-11:56:12.zip

鉴于此类文件大约有155450个,我该如何以简单有效的方式执行以下操作:

使用logrotate或其他工具为每个月创建一个文件夹:例如,mkdir $ currentMont = october,并将所有10月,2012年的文件放在那里,依此类推,每个月。

1 个答案:

答案 0 :(得分:1)

这听起来像一个带有几个嵌套for循环的bash脚本可以解决问题。

类似的东西:

for year in $(seq -f "%02g" 0 20); do
    for month in $(seq -f "%02g" 0 12); do
        dest = "20${year}-${month}"
        mkdir "$dest"
        mv "log_from_${dest}*" "${dest}";
    done;
done;

显然,您需要根据自己的需要进行调整。如果一个目录中的文件太多,则可能会遇到行水线限制,在这种情况下,您必须使用find . | xargs mv来避免此问题。