Sto usando il ricciolo in questa sintassi:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Se eseguo questo comando due volte, ottengo due file:
myfile.jpg
myfile-1.jpg
Come posso dire a CURL che voglio che sovrascriva il file se esiste?
Sto usando il ricciolo in questa sintassi:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Se eseguo questo comando due volte, ottengo due file:
myfile.jpg
myfile-1.jpg
Come posso dire a CURL che voglio che sovrascriva il file se esiste?
Risposte:
Uso:
curl http://mysite.com/myfile.jpg > myfile.jpg
noclobber
opzione abilitata ( set +o noclobber
).
Ho riscontrato lo stesso problema e voglio riutilizzare lo stesso nome file qualunque sia il lato server, nel tuo caso potresti ottenere il nome file basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
quindi puoi scrivere una funzione di supporto bash come:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
ma nel mio caso il nome file non fa nemmeno parte dell'URL, viene fornito con content-disposition; con arricciatura la riga di comando è
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
è possibile ignorare gli -fSL
handle se il lato server fornisce il reindirizzamento 302; il -R
timestamp per il lato server, -J
per considerare il lato server Content-Disposition
e -O
passare al comportamento di download invece di scaricare sul terminale;
tuttavia, soffre ancora di rifiutare di sovrascrivere se esiste il nome del file; Voglio che sovrascriva se il Last-Modified
timestamp sul lato server è più recente;
finisce con una soluzione di wget che è in grado di farlo:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
il -N
è quello di verificare lato tiemstamp server e sovrascrivere solo quando lato server ha nuova versione; --content-disposition
è considerare l' Content-Disposition
intestazione; e il comportamento predefinito di wget è scaricare, nel nome file fornito dal lato server.
nel tuo caso, se non ti interessa il timestamp, è solo
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
versione su quale sistema?