Método mais ideal para wget várias imagens que diferem apenas por número de imagem nos nomes dos arquivos

4

Eu tenho um arquivo de texto download-list.txt que se parece com isso:

http://www.example.com/file/image1.png
http://www.example.com/file/image2.png
http://www.example.com/file/image3.png
.
.
.

Para baixar os arquivos da lista eu corro

wget -i download-list.txt

Existe alguma mágica que eu possa usar e que não me obrigue a fazer tal lista?

    
por hpesoj626 09.05.2013 / 12:23

1 resposta

6

Se você estiver usando um bash razoavelmente moderno, você pode usar a expansão do shell da seguinte forma:

wget http://www.example.com/file/image{1..99}.png

Os itens acima tentarão obter image1.png até image99.png . Obviamente, escolha seu alcance conforme apropriado. Esses arquivos que não existem devem gerar um erro, mas não causam problemas reais. Se você quiser, você pode provavelmente suprimir os erros com alguma opção wget, ou redirecionando STDERR para / dev / null:

wget http://www.example.com/file/image{1..99}.png 2> /dev/null

Para um número realmente grande de arquivos, você pode se deparar com os limites da linha de comando - há um número máximo de argumentos que podem estar na linha de comando. É altamente improvável que você encontre esse problema, mas, no caso de estar lidando com um número realmente grande de arquivos, um loop for pode ser mais seguro:

for f in {1..1000}; do wget http://www.example.com/file/image$f.png; done
##  and the version sending STDERR to /dev/null:
for f in {1..1000}; do wget http://www.example.com/file/image$f.png 2> /dev/null; done
    
por 09.05.2013 / 12:43

Tags