web-dev-qa-db-fra.com

Parallèlement et wget pour télécharger et générer des noms de fichiers numériques ordonnés

J'ai un filelist avec des milliers de chemins absolus vers des fichiers nommés de manière incohérente, comme ceci:

file1A-2
file-76B
fileC-23
  (...)
file9B-1

Je cherche un moyen d'utiliser parallel, wget/curl/aria2 ou des outils similaires pour télécharger tous les fichiers de la filelist à l'aide de plusieurs connexions et processus, tout en sauvegardant chaque fichier avec un nouveau nom dans un ordre correct, comme ceci:

file1A-2     >    file0001
file-76B     >    file0002
fileC-23     >    file0003
           (...)
file9B-1     >    file9999
4
VixinG

Voici une idée de base:

i=0
for url in $(grep -v '#' "$1") ; do 
  ((i++))
  wget --output-document="file"$(printf "%03d" $i) "$url"
done

Je n'ai aucune expérience avec parallel, mais cela semble faire l'affaire:

i=0
for s in $(grep -v '#' "$1") ; do 
  ((i++))
  parallel --no-notice -n0 wget --output-document="file"$(printf "%03d" $i) "$s" ::: {1..1}
done

Ces scripts attendent le fichier liste en tant qu'argument sur la ligne de commande.

3
Thomas W.