运行 同时执行多个 Wget 命令

Run multiple Wget commands simultaneously

我有一个文本文件,每行都有一个 url 和所需的文件名(由 space 分隔)。我正在遍历此文本文件并下载 url 并使用 wget:

将其保存为所需的名称
while IFS=' ' read a b
 do wget $a -O $b
done < list.txt

问题是我的列表包含将近 9000 个文件,因此一个一个地下载它们需要很长时间。无论如何我可以同时下载它们吗?

试试:

while IFS=' ' read a b; do 
  wget $a -O $b &
done < list.txt

# Wait for background jobs to terminate...
wait

PS: 请记住,9000 个并发连接可能不会被服务器处理,因此我建议您以块为单位限制连接数。

您可以这样做:

number=10
while IFS=' ' read a b; do 
    if  test $(jobs | grep Running | wc -l) -ge $number; then
        sleep 1
    else
        echo "Starting $a..."
        wget $a -O $b &
    fi
done < list.txt
wait