如何`wget`文本文件中的URL列表?

Sha*_*ang 41 text wget

假设我在一个位置有一个包含数百个URL的文本文件,例如

http://url/file_to_download1.gz
http://url/file_to_download2.gz
http://url/file_to_download3.gz
http://url/file_to_download4.gz
http://url/file_to_download5.gz
....
Run Code Online (Sandbox Code Playgroud)

下载每个文件的正确方法是什么wget?我怀疑有一个命令wget -flag -flag text_file.txt

小智 88

man wget给我以下内容:

[..]

-i 文件

--input-file = file

从本地或外部文件中读取URL.如果 - 指定为文件,则从标准输入读取URL.(使用./-从字面上命名的文件中读取 - .)

如果使用此函数,则命令行上不需要存在URL.如果命令行和输入文件中都有URL,那么命令行上的URL将是第一个要检索的URL.如果未指定--force-html,则文件应包含一系列URL,每行一个.

[..]

所以: wget -i text_file.txt

  • 有没有办法控制并发作业的数量? (5认同)
  • 检查@Yusef 下面的答案:`cat text_file.txt | 并行--gnu“wget {}”` (2认同)

cey*_*uem 15

尝试:

wget -i text_file.txt
Run Code Online (Sandbox Code Playgroud)

(检查男人wget)


Yus*_*sef 13

与它并行运行

cat text_file.txt | parallel --gnu "wget {}"
Run Code Online (Sandbox Code Playgroud)

  • 如果 Parallel 对引用的要求很烦人,请使用 xargs: `cat text_file.txt | xargs -n10 -P4 wget`。这告诉 xargs 使用 10 个 URL 调用 wget 并一次运行 4 个 wget 进程。为了获得更好的体验,我会这样做:`cat text_file.txt | 嘘| xargs -n10 -P4 wget --继续`。这 (1) 会打乱 URL,因此当您停止并重新启动时,更有可能立即开始下载新文件,(2) 它会要求 wget “继续”部分下载(如果您在 wget 时按 Control-C,则可能会得到一些文件)正在下载)。 (4认同)

0x4*_*raj 7

如果您使用的是OpenWrt或使用一些旧版本的 wget 没有给您-i选项:

#!/bin/bash
input="text_file.txt"
while IFS= read -r line
do
  wget $line
done < "$input"
Run Code Online (Sandbox Code Playgroud)

此外,如果您没有wget,则可以使用curl或任何用于下载单个文件的工具。


ilC*_*ico 5

如果您还想保留原始文件名,请尝试:

wget --content-disposition --trust-server-names -i list_of_urls.txt
Run Code Online (Sandbox Code Playgroud)