【问题标题】:How to download multiple files in multiple sub-directories using curl?如何使用 curl 下载多个子目录中的多个文件?
【发布时间】:2020-07-14 08:23:36
【问题描述】:

我正在使用 curl 下载多个文件。所有文件的基本 URL 都一样

https://mydata.gov/daily/2017

这些目录中的数据按日期和文件类型进一步分组。所以我需要的第一个数据有这个目录

https://mydata.gov/daily/2017/001/17d/Roger001.gz

第二个数据是

https://mydata.gov/daily/2017/002/17d/Roger002.gz

我需要下载到 2017 年最后一天的数据,即

https://mydata.gov/daily/2017/365/17d/Roger365.gz

如何使用 curl 或任何其他类似工具将所有文件下载到单个本地文件夹,最好采用原始文件名?

【问题讨论】:

  • 你试过什么? for f in {001..365}; do curl https://mydata.gov/daily/2017/001/17d/Roger"$f".gz; done 会起作用吗?
  • @jared_mamrot 让我烦恼的是,每个文件的目录中间部分都会发生变化。对于第一天的实例数据,中间是 2017/001,而第二天则是 2017/002。
  • 看起来@mjrezaee 在这种情况下有正确的命令 - 这对你有用吗?
  • 是的!它确实有效。仍然感谢您对这个问题的评论!它也有帮助。 @jared_mamrot

标签: bash curl wget


【解决方案1】:

在 bash 终端中使用 for f in {001..365}; do curl https://mydata.gov/daily/2017/"$f"/17d/Roger"$f".gz -o /your-directory/Roger"$f".gz; done。 将your-directory 替换为您要保存文件的目录。

【讨论】:

  • 嗨@mjrezaee,您的答案在某种程度上可行,但有一些问题。我发现有些文件没有成功下载。有输出文件,但其中没有任何内容,文件大小为 0 kb。我尝试再次执行该命令,但缺少另一组文件。我尝试多次执行该命令,结果是随机的文件集被正确下载,而其他文件为空。
  • 我想我发现了问题所在。我使用 -O 而不是 -o 认为它会自动从远程位置复制文件名,但这似乎会导致问题。您的答案非常有效。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
相关资源
最近更新 更多