linux - 循环遍历 bash 中的日期以下载 "2016/201601031400"格式的文件

标签 linux bash web-scraping

我对 bash 和 Linux 还很陌生。所以这可能是一个愚蠢的问题。

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

的 URL 中

请注意,文件名包含年、月、日和时间。数据遍历了从2007/01/01到2016/12/31的所有日期;时间始终保持不变:“1400”。

我想遍历日期范围内的每个日期并下载所有的 tar.gz 文件。

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

最佳答案

如果您不介意花几秒钟来调用 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

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

关于linux - 循环遍历 bash 中的日期以下载 "2016/201601031400"格式的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41114781/

相关文章:

macos - cp -a 无法覆盖符号链接(symbolic link)目录

linux - 如何找到正在运行的 Docker 容器的所有镜像标签?

linux - 什么 linux shell 命令返回字符串的一部分?

python - 使用 requests_html 和 pyppeteer python 发送点击

linux - 使用 mingw-apt-get 在 mingw 上安装 rev

linux - 数数没有。使用回波时间

python - vscode python linux : how to automatically open terminal in right venv?

linux - linux shell 中的无效别名

javascript - 使用 Python 抓取 javascript 生成的数据

python - scrapy-splash 事件内容选择器在 shell 中工作,但不适用于蜘蛛