допустим есть большой файл(urls1.txt) где находятся только ссылки с расчетом один URL на строку
awk '/\.pdf$|\.xls$|\.xml$/ {print "url="$0}' urls1.txt > urls2.txt
отбираем нужные url-адреса и формируем список urls2.txt для последующего скармливания curl
curl --remote-name-all --parallel -K urls2.txt
закачиваем файлы параллельно из списка urls2.txt
п.с.
для удобства сам список можно разбить на несколько, например по 1000 ссылок на файл
mkdir urls
split --lines=1000 --numeric-suffixes=1 urls2.txt urls/list_
в папке urls появятся файлы по типу list_xxxx
после чего можно по очереди их скармливать curl
curl --remote-name-all --parallel -K list_xxxx
ну и обернуть всё это в цикл при желании