Estoy usando curl en esta sintaxis:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Si ejecuto este comando dos veces, obtengo dos archivos:
myfile.jpg
myfile-1.jpg
¿Cómo puedo decirle a CURL que quiero que sobrescriba el archivo si existe?
Estoy usando curl en esta sintaxis:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Si ejecuto este comando dos veces, obtengo dos archivos:
myfile.jpg
myfile-1.jpg
¿Cómo puedo decirle a CURL que quiero que sobrescriba el archivo si existe?
Respuestas:
Utilizar:
curl http://mysite.com/myfile.jpg > myfile.jpg
noclobber
opción habilitada ( set +o noclobber
).
Me encontré con el mismo problema y quiero reutilizar el mismo nombre de archivo, sea cual sea el lado del servidor, en su caso, puede obtener el nombre de archivo por basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
entonces puedes escribir una función bash auxiliar como:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
pero en mi caso el nombre del archivo ni siquiera es parte de la url, viene con disposición de contenido; con curl la línea de comando es
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
puede ignorar los -fSL
controles que maneja si el lado del servidor proporciona la redirección 302; la -R
marca de tiempo del lado del servidor, -J
para considerar el lado del servidor Content-Disposition
y -O
cambiar a comportamiento de descarga en lugar de descargar en el terminal;
sin embargo, todavía sufre negándose a sobrescribir si existe el nombre del archivo; Quiero que se sobrescriba si la Last-Modified
marca de tiempo del lado del servidor es más nueva;
termina con una solución wget que puede hacerlo:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
el -N
es verificar el tiemstamp del lado del servidor y sobrescribir solo cuando el lado del servidor tiene una nueva versión; --content-disposition
es considerar Content-Disposition
encabezado; y el comportamiento predeterminado de wget es descargar, al nombre de archivo dado desde el lado del servidor.
en su caso, si no le importa la marca de tiempo, es solo
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
versión en qué sistema?