从列表下载文件


130

如何使用wget或其他自动方式下载文件(在文本文件中列出)?

样本文件列表:

www.example.com/1.pdf
www.example.com/2.pdf
www.example.com/3.pdf

Answers:


227

wget对此具有内置标记:wget -i your_list 您可以通过阅读以下内容找到此类内容man wget


@aureianimus如果我想跳过链接2,那又如何?
alhelal

这个解决方案对我有用。我对按顺序而不是并行下载感到满意。
asiby

85

使它们与

cat urlfile | parallel --gnu "wget {}"

默认情况下,它将运行与内核一样多的进程,如果您真的想通过并行添加“ -j 20”快速拉低它们,则可以将其增加10倍。


1
我只是无法使它工作。我没有看到任何proc产生,为wget切换回显不输出任何内容
Jakub Bochenski 2014年

一些早期ubuntus在这个空间哑缺陷:stackoverflow.com/questions/16448887/...
meawoppl

2
请注意“它将运行与内核一样多的进程”-网络带宽可能将成为更多限制因素。
Wilf 2014年

2
真的要看 对于大量的小文件,这几乎快了一个数量级,因为大多数传输时间是握手/ TCP往返时间。同样,在要从多个较小的主机下载的情况下,有时每个连接的带宽是有限的,因此这会增加麻烦。
meawoppl 2014年

2
如果要使用具有不同主机名的相对URL(没有主机名的资源ID)列表,这将非常有用,例如:cat urlfile | 并行--gnu“ wget example1.com {}”和cat urlfile | parallel --gnu“ wget example2.com {}”
MauricioSánchez2015年


9

parallel有一个内置标志--arg-file-a),它将使用输入文件作为源,因此可以避免使用cat |。您可以使用

parallel --gnu -a urlfile wget

或者简单地 parallel --gnu wget < urlfile


5
awk '{print "http://" $0;}' list.txt | xargs -l1 wget

其中list.txt是您的列表文件


4

我看到了Florian Diesch的答案。

我通过bqc在命令中包含参数来使其工作。

xargs -i wget -bqc 'http://{}' < download.txt

所有下载均在后台并行开始。

  • -b: 背景。开始后立即进入后台
  • -q:安静。关闭wget的输出
  • -c:继续。继续获取部分下载的文件

1

链接文件links.txt

下载所有链接文件的命令

cat links.txt | wget -i

3
这是行不通的。wget -i links.txt是正确的命令。
Hery

不,这不是正确的命令。正确的命令是这样的:“ cat links.txt | wget -i”
DreamCoder

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.