如何使用Linux命令行下载大量数据?

4

范围只有1979-2015年吗?还是您正在寻找更动态的内容,首先检查一年是否存在? - Jeff Puckett
好的,对于这个例子,我可以通过简单地查看来检查。所以只需寻找循环代码。可能会有一些脚本,例如 wget http://nimbus.cos.uidaho.edu/DATA/OBS/pr_*.nc 或者 wget .../pr_[1979-2015].nc - breezeintopl
2个回答

5

wget 可以接受一个包含每行 URL 的文件作为输入。

wget -ci url_file

-i : 输入文件
-c : 恢复功能

所以你需要做的就是把URL放在一个文件中,然后将该文件与wget一起使用。

Jeff Puckett II的答案中提供的简单循环对于您的特定情况已足够,但如果您遇到更复杂的情况(随机URL),则此方法可能会派上用场。


非常感谢您的回答!这实际上为我带来了另外一个(两个)问题,长期以来我通常都是手动解决的T.T:1.如何创建一个带有重复内容“...pr_1979.nc \n ...\n ...pr_2015.nc”的文件?2.如何创建30多个名称为“1979.txt”的文件,并且内容为“http.../pr_1979.nc”?嗯,我想我可以使用R来连接具有变量x = 1979的长内容字符串。但我不认为这是通常的做法。由于我不是计算机科学专业,我不熟悉如何创建一批文件。(也许,极客们使用vim来完成这项工作?) - breezeintopl
好的,根据上面的答案,也许在循环中是这样的 echo $text1$i$text2 >> filename$i ; - breezeintopl
@breezeintopl:是的,但这样做就失去了它的意义(为每个链接创建一个文件)。filename$i 应该是 filename,这样所有的链接都会进入同一个文件。虽然我通常使用文本编辑器从 HTML 源代码中提取 URL,通常使用 [tag:sed]。 - Jahid
好的,明白了。非常感谢! - breezeintopl

3

可能是通过预定义的一系列循环来实现。

未经测试的代码:

for i in {1979..2015}; do
  wget http://nimbus.cos.uidaho.edu/DATA/OBS/pr_$i.nc
done

您可能也对这个答案感兴趣:https://dev59.com/HXVC5IYBdhLWcg3w1E7w - Jeff Puckett
谢谢!这非常有帮助!您有关于学习这种Bash代码的建议文档、书籍或教程吗? - breezeintopl
@breezeintopl 老实说,不是很清楚。你可以尝试在 http://softwarerecs.stackexchange.com 上发布问题。个人而言,我只是在 Stack Overflow 上搜索我需要做的任何事情,答案通常已经在这里了。 - Jeff Puckett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接