Как в Linux/BSD распараллелить скачивание файлов по списку

Дано: есть список ссылок для скачивания в текстовом файле, по ссылке на строку, файл называется 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 {} "

Отправить ответ

avatar
  Subscribe  
Сообщать по почте