331 votes

Enregistrer un fichier dans un dossier spécifique à l'aide d'une commande curl

Dans un shell script, je veux télécharger un fichier à partir d'une URL et l'enregistrer dans un dossier spécifique. Quel est le drapeau CLI spécifique que je dois utiliser pour télécharger des fichiers dans un dossier spécifique avec la commande curl ou comment puis-je obtenir ce résultat autrement ?

431voto

Atle Points 742

Je ne pense pas que vous puissiez donner un chemin d'accès à curl, mais vous pouvez faire un CD vers l'emplacement, télécharger et faire un CD en retour.

cd target/path && { curl -O URL ; cd -; }

Ou en utilisant subshell.

(cd target/path && curl -O URL)

Dans les deux cas, le téléchargement ne se fera que si le chemin d'accès existe. -O conserve le nom du fichier distant. Après le téléchargement, il retourne à l'emplacement d'origine.

Si vous devez définir le nom du fichier de manière explicite, vous pouvez utiliser le petit fichier -o option :

curl -o target/path/filename URL

120voto

Oleg Deribas Points 84

Cette option est disponible dans curl 7.73.0 :

curl --create-dirs -O --output-dir /tmp/receipes https://example.com/pancakes.jpg

30voto

wisbucky Points 829

curl n'a pas d'option pour cela (sans spécifier également le nom du fichier), mais wget ne. Le répertoire peut être relatif ou absolu. De plus, le répertoire sera automatiquement créé s'il n'existe pas.

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"

14voto

JFAA Points 53

Cela fonctionne pour moi :

curl http://centos.mirror.constant.com/8-stream/isos/aarch64/CentOS-Stream-8-aarch64-20210916-boot.iso --output ~/Downloads/centos.iso 

où :

--output me permet de définir le chemin d'accès et le nom du fichier et de l'extension que je souhaite placer.

9voto

F1Linux Points 129

Utiliser la redirection :

Cela permet de déposer un curl fichier téléchargé dans un chemin spécifié :

curl https://download.test.com/test.zip > /tmp/test.zip

Évidemment " test.zip "est le nom arbitraire que vous souhaitez donner au fichier redirigé - il peut s'agir du même nom ou d'un nom différent.

Je préfère en fait la solution de @oderibas, mais cela vous permettra de contourner le problème jusqu'à ce que votre distro supporte la version 7.73.0 de curl ou une version ultérieure

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X