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
@btk: 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; направете wget $url -O $( echo "$url" | md5); Свършен

късмет

person kjshim    schedule 12.01.2010