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?
curl
versión en qué sistema?Respuestas:
Utilizar:
fuente
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
entonces puedes escribir una función bash auxiliar como:
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
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 servidorContent-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:
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 considerarContent-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
fuente