【问题标题】:How can I get and format yesterday's date on the command line?如何在命令行上获取和格式化昨天的日期?
【发布时间】:2010-02-10 19:06:52
【问题描述】:

我有一个 Perl 脚本,它将在 linux suse 上的 cron 作业中运行。它将昨天生成的日志文件作为输入。日志的文件名包含日期(即 log.20100209)

我可以使用提示中的格式发送昨天的日期吗?我应该创建一个额外的脚本来获取日期并执行吗?如果是这样,我该怎么做?

谢谢

perl myscript.pl -f log.20100209

编辑

感谢您的帮助

它适用于:

perl myscript.pl -f log.`date --date='yesterday' '+%Y%m%d'`

【问题讨论】:

    标签: linux shell command-line


    【解决方案1】:

    GNU 日期:

    date --date='yesterday' '+%Y%m%d'
    

    【讨论】:

      【解决方案2】:

      你可以像这样得到昨天的日期:

      perl -we'@a=localtime(time-24*3600);printf "%04d%02d%02d", $a[5]+1900, $a[4]+1, $a[3]'
      

      您可以在提示符处调用脚本时使用它:

      perl myscript.pl -f log.`perl -we'@a=localtime(time-24*3600);printf "%04d%02d%02d", $a[5]+1900, $a[4]+1, $a[3]'`
      

      但这不可读,我建议你编写一个适当的脚本来计算昨天的日期,然后调用 myscript.pl。

      【解决方案3】:

      您不需要将昨天的日期作为附加参数发送。您已经可以使用其他两种方法获得它:

      1. Perl 的内置 time()、localtime() 或 gmtime() 函数将为您提供当前日期和时间,您可以使用它来确定昨天的日期。
      2. 它已包含在您的日志文件的名称中,因此您可以解析文件名以将日期转换为您需要的格式。

      Perl 有 a lot of modules 处理日期和时间,具体取决于您需要做什么。

      【讨论】:

      • 谢谢,但我想要一些简单的东西,可以独立于日志文件
      猜你喜欢
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2011-06-12
      • 1970-01-01
      相关资源
      最近更新 更多