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); сделанный

удачи

Другие вопросы по тегам