2012-04-03 17 views
1

文書をダウンロードするシェルスクリプトを作成しました。wgetを使用して日付から1日を引いたシェルスクリプト

cd Desktop/Reports/folder/ 

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

echo "data downloaded." 

トリッキーな部分は、私は(2012_04_02_data.xls)をロードしたい文書が前日の日付を記入されていることです。だから私は前日のデータをダウンロードする必要があります。今日のデータはダウンロードしないでください。

私の目標は、毎朝カレンダーの日を増やすことなくシェルスクリプトを実行することです。代わりに、シェルは現在の日付をとり、1カレンダー日を減算し、その日付をURL内にロードします。

ありがとうございました!

+0

非常に役に立ちます。みんなありがとう! – user12764

答えて

7

方法について:

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

これは、私はあなたが持っている推測しているLinuxのタグに基づいてのGNU coreutilsの、のために働くべきです。

1

日にちを処理する必要がある場合は、より難しい部分です。通常、ページを含むリンクをwgetし、href属性から日付をgrepします。文字列を "実際の" wgetコマンドに渡します。

2

あなたはので、ここで私はPerlでそれを行うだろうかだ、dateコマンド

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

あなたは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; 

それが入って来て、あなたがしたいかもしれない他の多くのものとして、あなたは、ファイルへのチャンクを保存するために、ユーザエージェントとのより派手なものを行うことができ、しかし、あなたはそれらのビットを自分で埋めなければならないでしょう。

関連する問題