2010-02-10 62 views
8

我有一個Perl腳本,它將在linux suse上的cron作業中運行。它會將昨天生成的日誌文件作爲輸入。日誌的文件名包含日期(即log.20100209)如何在命令行上獲取並格式化昨天的日期?

我可以使用提示格式發送昨天的日期嗎?我應該創建一個額外的腳本來獲取日期並執行嗎?如果是這樣,我該怎麼做?

感謝

perl myscript.pl -f log.20100209 

編輯

感謝您的幫助

它的工作有:

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

回答

28

GNU日期:

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

+1 I寧願這對我自己的Perl下面:) – 2010-02-10 19:22:59

+0

簡單易讀,謝謝! – Cesar 2010-02-10 19:43:52

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。

+0

另請參閱: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

0

你不應該需要發送昨天的日期作爲附加參數。你已經可以開始使用另外兩種方法吧:

  1. Perl的內置時間(),本地時間(),或gmtime的()函數會給你當前的日期和時間,你可以與合作,以確定昨天的日期。
  2. 它已包含在日誌文件的名稱中,因此您可以解析文件名以將日期轉換爲您需要的格式。

Perl有a lot of modules使用日期和時間,具體取決於您需要做什麼。

+0

謝謝,但我想要一些簡單的東西,允許獨立於日誌文件 – Cesar 2010-02-10 19:43:15

相關問題