批量下载文件名中包含日期的文件

批量下载文件名中包含日期的文件

我想编写一个 Linux 脚本,从网站下载不同日期的图片。我想我需要三个循环来表示 YY、MM 和 DD。YY 应该是 1974–2017、MM 01–12 和 DD 01–31。它在小型 Linux bash 脚本中是什么样子的?

答案1

我假设你的某个文件是 https://www.url.com/2017-11-16.png这样的,只有日期会改变。你可以使用Bash 括号扩展一次性计算日期并下载文件:

wget https://www.url.com/{2016..2017}-{01..02}-{01..02}.png

然而,这不适用于非常像你的情况一样,因为终端命令的长度是有限制的。另一种方法是for循环:

for i in {2016..2017}-{01..02}-{01..02}; do
  wget https://www.url.com/$i.png
done

但使用这种方法,你仍会得到像 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

根据您的具体需求调整startdateenddate。如果您需要将日期格式更改为例如20171116,请在这两个变量中执行此操作命令date,在这个例子中它是+%Y%m%d

相关内容