Wget с входным файлом и выходным документом

У меня есть список URL-адресов, которые я хотел бы передать в wget, используя --input-file.

Однако я не могу понять, как одновременно управлять значением --output-document, что просто, если вы вводите команды одну за другой. Я хотел бы сохранить каждый документ как MD5 его URL-адреса.

 cat url-list.txt | xargs -P 4 wget

И xargs здесь, потому что я также хочу использовать функции max-procs для параллельных загрузок.


person Chopstickz    schedule 12.01.2010    source источник


Ответы (4)


как насчет использования цикла?

while read -r line
do
   md5=$(echo "$line"|md5sum)
   wget ... $line ... --output-document $md5 ......
done < url-list.txt
person ghostdog74    schedule 12.01.2010
comment
Я думаю, что моя проблема заключалась в том, что я обнаружил xargs только сегодня, я этого не понял, но ваш ответ дал мне ключ к тому, чтобы xargs вызывал скрипт bash со всей логикой wget. - person Chopstickz; 12.01.2010

Не используйте cat. Вы можете xargs читать из файла. Со страницы man:

       --arg-file=file
       -a file
              Read items from file instead of standard input.  If you use this
              option, stdin remains unchanged when commands are  run.   Other‐
              wise, stdin is redirected from /dev/null.
person Dennis Williamson    schedule 12.01.2010
comment
@бтк: xargs -P 4 -a url-list.txt wget - person Dennis Williamson; 24.09.2012

В своем вопросе вы используете -P 4, что предполагает, что вы хотите, чтобы ваше решение работало параллельно. GNU Parallel http://www.gnu.org/software/parallel/ может вам помочь :

cat url-list.txt | parallel 'wget {} --output-document "`echo {}|md5sum`"'
person Ole Tange    schedule 10.06.2010

Вы можете сделать это следующим образом:

кошка url-list.txt | при чтении URL; do wget $url -O $(echo "$url" | md5); Выполнено

удачи

person kjshim    schedule 12.01.2010