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

示例文件列表:

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


#1 楼

wget对此具有内置标记:wget -i your_list
您可以通过阅读man wget
找到这种东西。

评论


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

–alhelal
17年11月22日在13:11

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

–asiby
17年12月21日在16:14

#2 楼

将它们与

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


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

评论


我只是无法使它工作。我没有看到任何proc产生,为wget切换echo不会输出任何东西

–雅库布·博琴斯基(Jakub Bochenski)
2014年5月9日19:10

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

–野生
2014年6月21日在17:10

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

–meawoppl
14年6月23日在17:22

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

–毛里西奥·桑切斯(MauricioSánchez)
15年5月14日在2:21



可能还会补充说,向网站泛滥以大量并行请求获取大文件并不是特别好。对于大型网站并不重要,但是如果只是较小的网站,则应当心。

–马格努斯
19-09-19在10:02

#3 楼

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

parallel --gnu -a urlfile wget


,或者简单地使用parallel --gnu wget < urlfile

#4 楼

xargs -i wget 'http://{}'  < your_list


#5 楼

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


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

#6 楼

我看到了Florian Diesch的答案。

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



-b:背景。启动后立即进入后台

-q:安静。关闭wget的输出

-c:继续。继续获取部分下载的文件


#7 楼

链接文件links.txt

用于下载所有链接文件的命令

cat links.txt | wget -i


评论


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

–非常
18年7月8日在0:34

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

–DreamCoder
18年7月19日在5:07

缺少一些破折号

–夏日的天空
20-2-12在17:14

#8 楼

我刚刚测试过:

xargs -a download_file -L1 wget


它对我有用。
txt文件中的链接必须位于单独的行中。