linux - 用于生成带有日期戳的新日志的 shell 脚本

标签 linux shell unix logging

有没有办法从日志文件中提取最后修改的日期和时间并将该日期和时间附加到文件中?

我有一个工具可以在每次运行时生成 appslist.log 文件。 当我运行该工具时,通过我的脚本,applist.log 文件已经存在,然后我可能必须将它与它的创建时间和日期相关联。

喜欢:

mv applist.log applist_+%Y%m%d_%H%M%S.log

假设我第一次运行该工具并生成了 applist.log:

applist.log     Mon 03-29-2013

下次我在 2013 年 3 月 30 日运行该工具时,我想移动现有的 applist.log 文件,并使用包含其创建日期和时间的新名称:

like applist_03-29-2013.log

因为该工具会在 2013 年 3 月 30 日再次生成 applist.log。

最佳答案

mv applist.log applist_`date -r applist.log +%Y%m%d%H%M%S`.log

这会将文件移动到名称中包含日期的新文件。 date 命令允许您以任何格式显示。有关这些字符序列的完整描述,请参见 man date。使用反引号将首先运行里面的命令。日期上的 -r 选项将获取相关文件的日期。

例子:

[me@host temp]$ mv applist.log applist_`date -r applist.log +%Y%m%d%H%M%S`.log
[me@host temp]$ ls -l
total 196
-rw-rw-r--. 1 me me     0 Mar 25 20:55 applist_20130325205532.log

我假设您的程序是一个 cron,并且每秒不会运行超过一次。

关于linux - 用于生成带有日期戳的新日志的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606450/

相关文章:

ruby-on-rails - 在unix中卸载手动编译的包

linux - 删除文件shell脚本

linux - Shell 脚本 - 意外 token `then'

linux - 如何在变量中传递值

ruby - 通过双击调用 ruby​​ 脚本不起作用

c - 使用 truss 调试 open() 命令调用

c++ - 线程和 fork()。我该如何处理?

linux - 多个linux终端同时向所有窗口发送命令

ruby - 如何测试其中包含 gets.chomp 的函数?

linux - 如果文件不存在则退出脚本