Você agiliza isso colocando sua operação em várias operações menores. Por exemplo, você pode criar 10 processos de curl e aplicá-los em segundo plano:
curl -O "http://website.com/pages/0[000000-999999].html" &
curl -O "http://website.com/pages/1[000000-999999].html" &
curl -O "http://website.com/pages/2[000000-999999].html" &
...
e assim por diante.
No entanto, a solução mais inteligente e mais flexível pode querer usar o paralelo GNU para que vários arquivos possam ser baixados em paralelo , com o manuseio paralelo da distribuição de tarefas.
instale-o com o seu gerenciador de pacotes de sua escolha, então seria algo simplesmente como
parallel -j 10 curl -O "http://website.com/pages/{1}" ::: $(seq -w 1000000)
que é muito mais elegante