我想编写一个Linux脚本来从网站下载不同日期的图片。我想我需要 YY、MM 和 DD 三个循环。YY 应该是 1974-2017,MM 01-12 和 DD 01-31。它在一个小的 Linux bash 脚本中看起来如何?
我假设您的文件之一是 https://www.url.com/2017-11-16.png并且只有日期更改。您可以使用Bash Brace Expansion计算日期并一次性下载文件:
wget https://www.url.com/{2016..2017}-{01..02}-{01..02}.png
Run Code Online (Sandbox Code Playgroud)
然而,这不会对工作非常多的网址像你的情况,因为有一个终端命令长度的限制。另一种方法是for循环:
for i in {2016..2017}-{01..02}-{01..02}; do
wget https://www.url.com/$i.png
done
Run Code Online (Sandbox Code Playgroud)
但是使用这种方法你仍然会得到像 2017-02-31 这样的日期。为了只获取我们需要的实际日期,date就像从这里获取的这个脚本:
#!/bin/bash
startdate=2017-11-14
enddate=2017-11-16
d=
n=0
until [ "$d" = "$enddate" ]; do
d=$(date -d "$startdate + $n days" +%Y-%m-%d)
wget https://www.url.com/$d.png
((n++))
done
Run Code Online (Sandbox Code Playgroud)
调整startdate并enddate满足您的确切需求。如果您需要更改日期格式例如20171116,在这两个变量,这样做和该date命令,在本例中是+%Y%m%d。