Wget с входным файлом и выходным документом
У меня есть список URL-адресов, которые я хотел бы ввести в wget, используя --input-file.
Однако я не могу понять, как управлять значением --output-document в одно и то же время, что очень просто, если вы вводите команды одну за другой. Я хотел бы сохранить каждый документ как MD5 своего URL.
cat url-list.txt | xargs -P 4 wget
И есть xargs, потому что я также хочу использовать функции max-procs для параллельной загрузки.
4 ответа
Как насчет использования цикла?
while read -r line
do
md5=$(echo "$line"|md5sum)
wget ... $line ... --output-document $md5 ......
done < url-list.txt
Не использовать cat
, Вы можете иметь xargs
читать из файла. От man
страница:
--arg-файл = файл -файл Чтение элементов из файла вместо стандартного ввода. Если вы используете это опция, стандартный ввод остается неизменным при выполнении команд. Другой- мудро, stdin перенаправляется из /dev/null.
В своем вопросе вы используете -P 4, который предполагает, что вы хотите, чтобы ваше решение работало параллельно. GNU Parallel http://www.gnu.org/software/parallel/ может помочь вам:
cat url-list.txt | parallel 'wget {} --output-document "`echo {}|md5sum`"'
Вы можете сделать это так:
кошка url-list.txt | пока читаешь URL; do wget $url -O $( echo "$url" | md5); сделанный
удачи