【问题标题】:Shell - renaming logfiles according to their timestampsShell - 根据时间戳重命名日志文件
【发布时间】:2012-11-28 23:43:15
【问题描述】:

我正在尝试使用以下格式重命名日志文件:logfile_access_server1.log 根据它们的创建日期,以便它们具有以下格式:20121128.log 20121127.log 等...并将它们 gzip 到另一个文件夹中,使用外壳脚本。

我试过了:

    #! /bin/sh

for i in `ls *access*.log`
do
mv $i /home/log/$i$(date +%F-%T).gz
done

(我是shell脚本的菜鸟,显然它不起作用)

提前感谢您的帮助

J.

【问题讨论】:

  • 您从哪里获得文件创建日期?
  • 从日志文件时间戳,有可能吗?
  • 给你文件修改时间,而不是文件创建时间......
  • 你说得对,很公平,我只需要日期
  • 你的意思是你想要文件名中文件修改日期的时间戳。这有点令人困惑,因为您使用了当前时间戳进行重命名。

标签: shell


【解决方案1】:

Don't parse ls

for filename in *access*.log; do
    basename=$(basename "$filename" .log)
    timestamp=$(date -d "$(stat -c %y "$filename")" +%F-%T)
    mv "$filename" "/home/log/$basename.$timestamp.log"
done

你调查过logrotate吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多