web-dev-qa-db-fra.com

Comment `wget` une liste d'URL dans un fichier texte?

Disons que j'ai un fichier texte de centaines d'URL dans un emplacement, par exemple.

http://url/file_to_download1.gz
http://url/file_to_download2.gz
http://url/file_to_download3.gz
http://url/file_to_download4.gz
http://url/file_to_download5.gz
....

Quelle est la bonne façon de télécharger chacun de ces fichiers avec wget? Je soupçonne qu'il y a une commande comme wget -flag -flag text_file.txt

39
ShanZhengYang

Quick man wget me donne les informations suivantes:

[..]

-i fichier

--input-file = fichier

Lire des URL à partir d'un fichier local ou externe. Si - est spécifié en tant que fichier, les URL sont lues à partir de l'entrée standard. (Utilisez ./- pour lire un fichier littéralement nommé -.)

Si cette fonction est utilisée, aucune URL ne doit être présente sur la ligne de commande. S'il existe des URL à la fois sur la ligne de commande et dans un fichier d'entrée, celles qui figurent sur les lignes de commande seront les premières à être récupérées. Si --force-html n'est pas spécifié, le fichier doit alors être composé d'une série d'URL, une par ligne.

[..]

Donc: wget -i text_file.txt

79
dim-0

essayer:

wget -i text_file.txt

(check man wget)

15
ceyquem

Si vous souhaitez également conserver le nom de fichier d'origine, essayez avec:

wget --content-disposition --trust-server-names -i list_of_urls.txt
5
ilCosmico

Si vous êtes sur OpenWrt ou utilisez une ancienne version de wget qui ne vous donne pas l'option -i:

#!/bin/bash
input="text_file.txt"
while IFS= read -r line
do
  wget $line
done < "$input"

De plus, si vous n'avez pas wget, vous pouvez utiliser curl ou ce que vous utilisez pour télécharger des fichiers individuels.

0
0x48piraj