Дано: есть список ссылок для скачивания в текстовом файле, по ссылке на строку, файл называется input.txt
.
Задача: скачивать по N файлов одновременно, то есть скачивать список в N потоков.
Не путать с множеством потоков скачивания одного файла. Здесь мы качаем N файлов одновременно, и каждый файл качается в один поток.
Делается так:
parallel -a <(cat "input.txt") -P 16 wget "{1}"
Предварительно установить wget
и parallel
.
Пример с реализацией в скрипте скачивания аудио-книг с сайта "Книга в ухе" (knigavuhe.com):
https://gitlab.com/mikhailnov/kvigavuhe-download/blob/master/download.sh#L43
UPD. Дополнение от Романа Кудоярова:
"Можно xargs заюзать. И не ставить parallel
< input.txt | xargs -n 1 -P 16 -I {} wget {}
"