Question Télécharger des fichiers depuis une liste


Comment puis-je télécharger des fichiers (répertoriés dans un fichier texte) en utilisant wget ou d'une autre manière automatique?

Exemple de liste de fichiers:

www.example.com/1.pdf
www.example.com/2.pdf
www.example.com/3.pdf

110
2018-02-12 16:39


origine




Réponses:


wget a un drapeau intégré pour cela: wget -i your_list Vous pouvez trouver ce genre de chose en lisant man wget


191
2018-02-12 16:56



Pourquoi RTFM quand vous pouvez obtenir le bon karma StackExchange? - spoulson
@ aureianimus si je veux sauter le lien 2 alors comment? - alhelal
Cette solution a fonctionné pour moi. J'étais content du téléchargement séquentiel et non parallèle. - asiby


Faites-les en parallèle avec

cat urlfile | parallel --gnu "wget {}"

Par défaut, il exécutera autant de processus que vous en avez, vous pouvez probablement augmenter ce nombre de 10 si vous voulez vraiment les supprimer rapidement en ajoutant "-j 20" après le parallèle.


79
2017-10-17 15:57



Je reçois autant de votes que pour cela. Pas de commentaires, pas d'amour! - meawoppl
Pour ma part, je ne peux pas le faire fonctionner. Je ne vois pas de proc engendré, le changement d'écho pour wget ne produit rien - Jakub Bochenski
Notez qu'avec le "il exécutera autant de processus que vous en avez", la bande passante du réseau sera probablement un facteur plus limitant. - Wilf
Cela dépend vraiment. Pour un grand nombre de petits fichiers, cela peut être un ordre de grandeur beaucoup plus rapide, car la majeure partie du temps de transfert est constituée par les allers-retours / les allers-retours TCP. De même, dans le cas où vous téléchargez à partir de plusieurs hôtes plus petits, la bande passante par connexion est parfois limitée. - meawoppl
Ceci est très utile si vous souhaitez utiliser une liste d'URL relatives (ID de ressource sans nom d'hôte) avec différents noms d'hôte, par exemple: cat urlfile | parallèle --gnu "wget example1.com{} "et cat urlfile | parallel --gnu" wget example2.com{} " - Mauricio Sánchez


xargs -i wget 'http://{}'  < your_list

9
2018-02-12 16:53





parallel a un drapeau intégré --arg-file (-a) qui utilisera un fichier d'entrée comme source, vous pouvez donc éviter cat |. Vous pouvez utiliser

parallel --gnu -a urlfile wget

Ou simplement parallel --gnu wget < urlfile


7
2018-06-18 12:01





awk '{print "http://" $0;}' list.txt | xargs -l1 wget

où list.txt est votre fichier de liste


5
2018-02-12 16:51





J'ai vu la réponse de Florian Diesch.

Je l'ai fait fonctionner en incluant le paramètre bqc dans la commande.

xargs -i wget -bqc 'http://{}' < download.txt

Tous les téléchargements ont commencé en parallèle en arrière-plan.

  • -b: Contexte. Aller en arrière-plan immédiatement après le début
  • -q: Silencieux. Désactiver la sortie de wget
  • -c: Continuer. Continuer à obtenir un fichier partiellement téléchargé

4
2018-05-04 16:56





Lien fichier links.txt

Commande pour télécharger tous les fichiers de liens

    cat links.txt | wget -i

1
2018-05-19 02:54



Cela ne fonctionne pas. wget -i links.txt est la bonne commande. - Hery
Non, ce n'est pas la bonne commande. La commande droite est la suivante: "cat links.txt | wget -i" - DreamCoder