如何在命令行上获取并格式化昨天的日期?
我有一个Perl脚本,它将在linux suse上的cron作业中运行。它会将昨天生成的日志文件作为输入。日志的文件名包含日期(即log.20100209)如何在命令行上获取并格式化昨天的日期?
我可以使用提示格式发送昨天的日期吗?我应该创建一个额外的脚本来获取日期并执行吗?如果是这样,我该怎么做?
感谢
perl myscript.pl -f log.20100209
编辑
感谢您的帮助
它的工作有:
perl myscript.pl -f log.`date --date='yesterday' '+%Y%m%d'`
GNU日期:
date --date='yesterday' '+%Y%m%d'
你可以得到昨天的日期是这样的:
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。
另请参阅:http://theoryx5.uwinnipeg.ca/CPAN/perl/pod/perlfaq4/How_do_I_find_yesterday's_date.html和http://flux.org.uk/howto/perl/yesterday_date – 2010-02-10 20:35:51
你不应该需要发送昨天的日期作为附加参数。你已经可以开始使用另外两种方法吧:
- Perl的内置时间(),本地时间(),或gmtime的()函数会给你当前的日期和时间,你可以与合作,以确定昨天的日期。
- 它已包含在日志文件的名称中,因此您可以解析文件名以将日期转换为您需要的格式。
Perl有a lot of modules使用日期和时间,具体取决于您需要做什么。
谢谢,但我想要一些简单的东西,允许独立于日志文件 – Cesar 2010-02-10 19:43:15
+1 I宁愿这对我自己的Perl下面:) – 2010-02-10 19:22:59
简单易读,谢谢! – Cesar 2010-02-10 19:43:52