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

标签 linux bash eggdrop

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

channel 名.log.%d%b%Y ( channel 名.log.14Jan2014)

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

channel 名.log.%Y%m%d ( channel 名.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 知道如何处理的语言环境中。

关于linux - 将日志文件从一种时间格式批量重命名为另一种时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003174/

相关文章:

linux - 运行时更改IP地址

linux - 删除日期字符串早于 X 天的 yyyy-MM-dd 文件夹

linux - 为什么 |不适用于查找?

mysql - 将 foreach 列表排序为 unix 时间戳

tcl - regsub 匹配为 lindex 索引,针对 irc 控制字符

linux - Chef chef-validator.pem 安全

linux - ldd输出的解释

c - VT100 数字键盘使用修饰符(ctrl/shift/alt)时的转义码

bash 在循环中填充一个数组

regex - TCL 将文本字符串拆分为多个变量(eggdrop)