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.txtque 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 na lista eu corro

wget -i download-list.txt

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

hpesoj626
fonte

Respostas:

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

O acima tentará chegar image1.pngaté o final image99.png. Obviamente, escolha o seu alcance conforme apropriado. Esses arquivos que não existem devem gerar um erro, mas não causam problemas reais. Se você quiser, provavelmente poderá 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
Evilsoup
fonte