Guarde el archivo en una carpeta específica con el comando curl

182

En un script de shell, quiero descargar un archivo de alguna URL y guardarlo en una carpeta específica. ¿Cuál es el indicador de CLI específico que debo usar para descargar archivos a una carpeta específica con el curlcomando, o cómo puedo obtener ese resultado?

Ziyaddin Sadigov
fuente
Parecería que fiesta es la programación de la programación ...
rjurney

Respuestas:

282

No creo que pueda dar un camino para rizar, pero puede CD a la ubicación, descargar y volver a CD.

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

O usando subshell.

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

Ambas formas solo se descargarán si existe una ruta. -Omantiene el nombre del archivo remoto. Después de la descarga, volverá a su ubicación original.

Si necesita establecer el nombre de archivo explícitamente, puede usar la -oopción pequeña :

curl -o target/path/filename URL
Atle
fuente
2
Tengo este comando: curl -LOk basename /packages" github.com/ziyaddin/xampp/archive/master.zip ". Pero dice ese nombre de archivo incorrecto ->basename /packages
Ziyaddin Sadigov
10
También puede usar una subshell, así:(cd target/path; curl -O URL)
Ehtesh Choudhury
9
¿Cuál es la diferencia entre los dos? El primer CD está en el directorio y descarga el archivo, luego sale en CD. El segundo permanece en el directorio actual y el archivo de rizos a una ubicación específica. El segundo parece más simple.
Henry Zhu
9
@HenryZhu En el primero, el nombre del archivo se deriva del nombre del archivo en el servidor. En el segundo, cambiará el nombre del contenido que descargó al nombre que proporcione.
turtlemonvh
44
Realmente me gustaría una opción para especificar un directorio, pero use el nombre de archivo del servidor. Parece que usar cdes la mejor opción actualmente, aunque parece un poco poco elegante.
StockB
4

curlno tiene una opción para eso (sin especificar también el nombre del archivo), pero wgetsí. El directorio puede ser relativo o absoluto. Además, el directorio se creará automáticamente si no existe.

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"
Wisbucky
fuente