在bash中循环使用日期以"2016/201601031400"格式下载文件

Key*_*ani 0 linux bash web-scraping

我是bash和Linux的新手.所以这可能是一个愚蠢的问题.

我正在尝试制作一个bash脚本来从网站下载多个文件.文件位于格式的URL中http://example.com/xyz/abc/2016/201601031400.tar.gz

请注意,文件名包含年,月,日期和时间.该数据贯穿了2007/01/01至2016/12/31的所有日期; 时间总是保持不变:"1400".

我想遍历日期范围中的每个日期,并希望下载所有tar.gz文件.

有人可以帮我解决循环部分并动态生成wget下载文件的URL吗?

Tob*_*ght 5

如果您不介意花几秒钟来调用date几千次(与网络往返次数相比这将是微不足道的),您可以在开始时间添加几天.使用一个简单的for循环(注意你的范围内有3653天),并使用date适当格式化每个循环:

#!/bin/bash

start='14:00 2007-01-01'

for i in {0..3652}
do
    d=$(date -d "$start +$i days" '+http://example.com/xyz/abc/%Y/%Y%m%d%H%M.tar.gz')
    echo "$d"   # or wget, or whatever
done
Run Code Online (Sandbox Code Playgroud)

上面,我们使用-d参数来date添加初始日期的天数,并使用format参数将日期/时间值插入到字符串中.