我写了一个下载文档的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 :(得分:7)
怎么样:
wget "http://www.mywebpage.com/data/reports/$(date -d yesterday +%Y_%m_%d)_data.xls"
这应该适用于GNU coreutils,它基于我猜你有的linux标签。
答案 1 :(得分:2)
您可以使用date
命令
$ wget "http://www.mywebpage.com/data/reports/$(date -d yesterday +'%Y_%m_%d')_data.xls"
答案 2 :(得分:1)
更棘手的部分是,如果你必须处理好几天。通常我会忘记包含页面的链接,然后从href属性中删除日期。然后将字符串传递给“真正的”wget命令。
答案 3 :(得分: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;
您可以使用用户代理执行更多花哨的操作,以便将块保存到文件中以及您可能想要执行的许多其他操作,但您必须自己填写这些内容。