Wget con entrada y salida de archivos de documentos
Pregunta
Tengo una lista de URLs que me gustaría para alimentar wget usando --input-archivo.
Sin embargo no puedo encontrar la manera de controlar el valor --output-documento al mismo tiempo, que es simple si se emite los comandos uno por uno. Me gustaría guardar cada documento como el MD5 de su URL.
cat url-list.txt | xargs -P 4 wget
Y xargs está ahí porque también quiero hacer uso de las características max-procs de descargas paralelas.
Solución
¿Cómo sobre el uso de un bucle?
while read -r line
do
md5=$(echo "$line"|md5sum)
wget ... $line ... --output-document $md5 ......
done < url-list.txt
Otros consejos
No utilice cat
. Usted puede tener xargs
leer desde un archivo. Desde la página 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.
En su pregunta utiliza -P 4 que sugiere usted quiere que su solución para ejecutar en paralelo. GNU http://www.gnu.org/software/parallel/ pueden ayudarle :
cat url-list.txt | parallel 'wget {} --output-document "`echo {}|md5sum`"'
Puede hacerlo de esta manera:
gato url-list.txt | mientras lee url; hacer wget -O $ url $ (echo "$ url" | MD5); hecho
buena suerte