如何在命令行上获取和格式化昨天的日期?

时间:2010-02-10 19:06:52

标签: linux shell command-line

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

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

由于

perl myscript.pl -f log.20100209

修改

感谢您的帮助

它适用于:

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

3 个答案:

答案 0 :(得分:28)

GNU日期:

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

答案 1 :(得分:1)

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

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。

答案 2 :(得分:0)

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

  1. Perl的内置时间(),localtime()或gmtime()函数将为您提供当前日期和时间,您可以使用它来确定昨天的日期。
  2. 它已包含在日志文件的名称中,因此您可以解析文件名以获取所需格式的日期。
  3. Perl有a lot of modules来处理日期和时间,具体取决于您需要做什么。