2012-04-03 76 views
1

我编写了一个用于下载文档的shell脚本。使用wget获取日期减去1天的Shell脚本

cd Desktop/Reports/folder/ 

wget http://www.mywebpage.com/data/reports/2012_04_02_data.xls 

echo "data downloaded." 

棘手的部分是我要加载的文档(2012_04_02_data.xls)是针对前一天的日期。所以我需要下载前一天的数据,而不是当天。

我的目标是运行shell脚本,而不必每天早上增加日历日。相反,shell将采用当前日期并减去一个日历日,然后在url中加载该日期。

感谢您的帮助!

+0

非常有帮助。谢谢大家! – user12764 2012-04-04 15:52:46

回答

7

如何:

wget "http://www.mywebpage.com/data/reports/$(date -d yesterday +%Y_%m_%d)_data.xls" 

这应该为GNU的coreutils,其基于Linux的标签我猜你有工作。

1

更棘手的部分是,如果你必须处理日子。通常我会查看包含页面的链接,然后从href属性中查找日期。然后将该字符串传递给您的“真实”wget命令。

2

可以使用date命令

$ wget "http://www.mywebpage.com/data/reports/$(date -d yesterday +'%Y_%m_%d')_data.xls" 
1

您与perl标记这一点,所以这里是我如何用Perl做。这并不意味着我认为你应该尽管使用Perl:

use v5.10.1; 

use DateTime; 
use Mojo::UserAgent; 

chdir 'Desktop/Reports/folder' or die "Could not chdir: $!"; 

my $date = DateTime->now->subtract(days => 1)->ymd('_'); 
my $url = sprintf 
    "http://www.mywebpage.com/data/reports/%s_data.xls", 
    $date; 

my $data = Mojo::UserAgent->new->get($url)->res->body; 

你可以做更多花哨的东西与用户代理,以块保存到一个文件,因为它来的,你可能想要做很多其他的事情,但你必须自己填写这些部分。