web-dev-qa-db-fra.com

Comment télécharger un fichier dans un répertoire en utilisant curl ou wget?

Je sais que je peux utiliser les 2 commandes suivantes pour télécharger un fichier:

curl -O example.com/file.Zip
wget example.com/file.Zip

Mais je veux qu'ils aillent dans un répertoire spécifique. Je peux donc faire ce qui suit:

curl -o mydir/file.Zip example.com/file.Zip
wget -O mydir/file.Zip example.com/file.Zip

Est-il possible de ne pas avoir à spécifier le nom de fichier? Quelque chose comme ça:

curl -dir mydir example.com/file.Zip
44
at.

La ligne suivante téléchargera tous les fichiers dans un répertoire que vous avez mentionné.

wget -P /home/test www.xyz.com

Ici, les fichiers seront téléchargés sur /home/test répertoire

50
Kishan

Je sais que c'est une vieille question mais il est possible de faire ce que vous demandez avec curl

rm directory/somefile.Zip
rmdir directory
mkdir directory
curl --http1.1 http://example.com/somefile.Zip --output directory/somefile.Zip

tout d'abord, si cela a été écrit dans un script, vous devez vous assurer que le fichier s'il existe déjà est supprimé, puis supprimer le répertoire, puis boucler le téléchargement. Sinon, curl échouera avec un fichier et le répertoire existe déjà.

15
mewasthere

Le moyen le plus simple est de cd dans un sous-shell

  (cd somedir; wget example.com/file.Zip)

et vous pourriez en faire une fonction Shell (par exemple, dans votre ~/.bashrc)

  wgetinside() {
    ( cd $1 ; shift; wget $* )
  }

puis tapez wgetinside somedir http://example.com/file.Zip

4

La réponse courte est non car curl et wget écrit automatiquement dans STDOUT. Aucune option n'est intégrée pour placer le fichier téléchargé dans un répertoire.

-o/--output <file> Write output to <file> instead of stdout (Curl)

-O,  --output-document=FILE    write documents to FILE. (WGet)

Mais comme il sort nativement vers STDOUT, il vous donne des solutions de programmation telles que:

 i="YOURURL"; f=$(awk -F'/' '{print $NF}' <<< $i);curl $i > ~/$f

Le premier je définirai votre URL (example.com/file.Zip) comme une variable. La partie f = a supprimé l'URL et a laissé /file.Zip, puis vous avez bouclé le fichier ($ i) dans le répertoire (~) en tant que nom de fichier.

1
MattSizzle