Estoy tratando de descargar dos archivos con la siguiente sintaxis:
curl -O http://domain/path/to/{file1,file2}
El problema es que solo el primer archivo se guarda localmente y el segundo simplemente se imprimió en stdout.
Me di cuenta de que si agrego un -O
, funciona bien:
curl -OO http://domain/path/to/{file1,file2}
¿Pero no es esto poco práctico si la cantidad de archivos crece demasiado? Por ejemplo,
curl -O http://domain/path/to/file[1,100]
Mi pregunta es, ¿realmente no hay forma de descargar varios archivos individuales a la vez con curl
(sin agregar un número correcto de -O
)?
curl
puedo lograrlo. (2) Estoy considerando no solo HTTP (s), protocolos FTP, por ejemplo, SFTP.curl
simplemente falla en esta funcionalidad no tan difícil?{}
y[]
sintaxis (y también*
y?
) es la expansión / expansión de shell ,curl
nunca llega a verlos, es lo mismo quecurl url1 url2
Respuestas:
Actualización: Esto se ha implementado en curl 7.19.0. Ver la respuesta de @Besworks.
De acuerdo con la página del manual, no hay forma de mantener el nombre del archivo original, excepto el uso de múltiples O's. Alternativamente, podría usar sus propios nombres de archivo:
resultando en
http://one.site.com
ser salvadofile_one.txt
yhttp://two.site.com
ser salvado enfile_two.txt
.o incluso múltiples variables como
resultando en
http://site.host1.com
ser guardado ensite_1
,http://host.host1.com
ser guardado enhost_1
y así sucesivamente.fuente
curl -$(printf 'O%.0s' {1..3}) http://domain/path/to/{file1,file2,file3}
Me doy cuenta de que ya hay una respuesta aceptada a esta pregunta, pero creo que debo señalar que en realidad hay una manera de hacerlo.
La
--remote-name-all
opción le dice a curl que se comporte como si usara-O
o--remote-name
para cada archivo.https://curl.haxx.se/docs/manpage.html#--remote-name-all
Esta opción ha estado disponible desde la versión 7.19.0
https://curl.haxx.se/changes.html#7_19_0
fuente
Hay una forma alternativa de descargar varios archivos con curl:
Nota : el espacio obligatorio se utiliza para delimitar diferentes URL.
fuente