如何在shell中创建日期生成器?

时间:2017-08-11 18:45:05

标签: shell powershell date batch-file batch-processing

我想从过去4年的网站中提取一些信息,每个文件都是基于日期的,例如http://ransompull.com/pullme/2013-04-06/example.2013-04-06.txt

它是起始文件,它今天结束,所以我想从过去4年中提取所有txt文件。

我尝试了什么:

DATE=`date +%Y`
MONTH='01'
DAY='1'
for i in range(1,31);
for j in range(01,12):
do wget http://ransompull.com/pullme/$DATE$i/example.$DATE$i.txt;
done
done

但这似乎是错误的,因为迭代月份和日期是不可行的,因为它没有提供所需的输出。关于如何从中提取所有数据的任何建议

http://ransompull.com/pullme/2013-04-06/example.2013-04-06.txthttp://ransompull.com/pullme/2017-08-10/example.2017-08-10.txt

2 个答案:

答案 0 :(得分:2)

而不是计算年,月和日, 你可以计算相对于开始日期的天数。 如果你有date命令的GNU实现, 您可以使用它来计算相对日期,例如:

date +%F -d '2013-04-06 + 1000 days'

这会输出2016-01-01。 您可以创建一个循环,通过递增从开始到结束的天数来生成日期:

start=2013-04-06
end=2017-08-10
date=$start
days=0

while [ "$date" != "$end" ]; do
    date=$(date +%F -d "$start + $days days")
    wget http://ransompull.com/pullme/$date/example.$date.txt
    ((days++))
done

答案 1 :(得分:1)

试试这个:

$startdate=get-date 2017-08-11
$enddate=$startdate.AddYears(-4)

0..($startdate - $enddate).Days | %{wget ("http://ransompull.com/pullme/{0:yyyy-MM-dd}/example.{0:yyyy-MM-dd}.txt" -f $startdate.AddDays(-$_))}