Faites une boucle sur une plage de nombres à télécharger avec wget


11

Comment puis-je écrire un script bash qui va faire ce qui suit:

URL = "example.com/imageID="
while (1..100)
   wget URL + $i #it will wget example.com/imageID=1, then 2, then 3, etc
done

J'ai donc un certain nombre de boucles à effectuer, une URL qui se termine par un numéro de la boucle. J'ai besoin de wgettout cela.

Réponses:


19

si vous utilisez Bash 4.0, vous pouvez le faire:

wget example.com/imageId={1..100}.jpg

10

C'est assez facile, même pour quelqu'un avec peu d'expérience en programmation. En cas de doute, lisez toujours le manuel de Bash :

for i in {1..100}
do
    wget "example.com/imageID=$i"
done

Par principe, vous devez joindre les $iguillemets:wget "example.com/imageID=$i"
Scott

cela fonctionne probablement très bien. cependant, je pars de "00008000" et le wget tire des erreurs car pour certains, il saute les quatre premiers zéros.
esaruoho

-1

Dans le cas où la variable n'est pas à la fin de l'URL et la variable se trouve entre les traits de soulignement:
example.com/imageID_1_2018.gif
example.com/imageID_2_2018.gif
example.com/imageID_3_2018.gif
.
.
.
example.com/imageID_100_2018.gif

wget example.com/imageID_{1..100}_2018.gif
de manière équivalente:
for ((i=1;i<=100;i++)); do wget example.com/imageID_${i}_2018.gif; done


3
Bienvenue dans Super User. Veuillez modifier votre réponse pour fournir plus de détails. Tout le monde ne lisant pas votre message peut comprendre comment il répond à la question du PO sans une explication plus détaillée.
Je dis Reinstate Monica

1
Je ne suis pas sûr que ce soit une réponse. Cela ressemble à une explication de la réponse acceptée (et pas très claire).
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.