Como posso baixar vários arquivos armazenados em um arquivo de texto com curl e xargs?

7

Como posso baixar vários arquivos armazenados em um arquivo de texto com curl e xargs? Este é meu último teste:

cat listfile.txt | xargs curl -O

o primeiro arquivo funciona bem, mas outros arquivos são enviados para o stdout.

    
por Eonil 29.06.2010 / 10:04

3 respostas

2

Eu encontrei a solução:

cat ./../c | xargs -n1 curl -O

xargs divide o stdin por espaços e novas linhas e passa a se enrolar de uma só vez. Então, enrole chamado apenas uma vez com argumentos longos.

A opção

n1 limita este argumento de passagem a contar como 1, por isso o curl será chamado várias vezes.

    
por 29.06.2010 / 10:09
12

Usando o link do GNU Paralelo, você pode fazer:

cat listfile.txt | parallel curl -O

O GNU Parallel não só funciona bem com caracteres especiais como '"e espaço, você também terá o benefício adicional de fazer o download em paralelo.

Assista ao vídeo de introdução ao GNU Parallel: link

    
por 29.06.2010 / 16:45
0

O xargs não sabe o que é o curl, portanto não é possível determinar quantos argumentos ele deve passar em uma rodada. Então a solução é passar uma opção -n1 para ele como você mencionou.

    
por 29.06.2010 / 10:21

Tags