Linux 将日志文件从一种时间格式批量重命名为另一种时间格式

Linux 将日志文件从一种时间格式批量重命名为另一种时间格式,linux,bash,eggdrop,Linux,Bash,Eggdrop,我正在寻找一种方法批量重命名由Eggdrop机器人创建的近1000个日志文件。几年前,我不得不从头开始设置我的机器人,而忽略了正确设置日志格式,因此所有这些文件现在都具有以下格式: channelname.log.%d%b%Y(channelname.log.2014年1月14日) 我想重命名所有这些文件以匹配我的所有旧日志文件,其格式为: channelname.log。%Y%m%d(channelname.log.20140101) 我已经在我的eggdrop.conf文件中做了更改,但是我

我正在寻找一种方法批量重命名由Eggdrop机器人创建的近1000个日志文件。几年前,我不得不从头开始设置我的机器人,而忽略了正确设置日志格式,因此所有这些文件现在都具有以下格式:

channelname.log.%d%b%Y(channelname.log.2014年1月14日)

我想重命名所有这些文件以匹配我的所有旧日志文件,其格式为:

channelname.log。%Y%m%d(channelname.log.20140101)

我已经在我的eggdrop.conf文件中做了更改,但是我想重命名所有较新的日志文件,以匹配旧日志文件的格式

这是一个Linux shell,因此某种bash命令将是理想的。谢谢

find . -type f -name '*.log.*[^0-9-]*' -print0 | while read -d '' -r logfile; do
    mv "${logfile}"  "${logfile/.log.*/.log.`date -d ${logfile#*.log.} +%Y-%m-%d`}"
done

假设它位于区域设置
date
中,则知道如何处理。

该命令给我的输出“date:invalid date'%Y-%m-%d'”等于文件数。在它完成运行后,目录中只剩下一个文件名“channelname.log”。(当然,在尝试之前,我先备份了所有日志)。我看看能不能找出它的故障点。明白了,看起来是个小错误,你的“${I#*.log.}”应该是“${logfile.*.log.}”。谢谢啊,对不起,幸运的是你备份了;)是的,我通常用一个
来测试…
构造中的I,这是我用一个合适的变量名替换的结果,但显然不是全部,抱歉!