Ich verwende Curl in dieser Syntax:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Wenn ich diesen Befehl zweimal ausführe, erhalte ich zwei Dateien:
myfile.jpg
myfile-1.jpg
Wie kann ich CURL mitteilen, dass die Datei überschrieben werden soll, falls vorhanden?
curl
Version auf welchem System?Antworten:
Benutzen:
quelle
noclobber
Option nicht aktiviert ist (set +o noclobber
).Ich bin auf dasselbe Problem gestoßen und möchte denselben Dateinamen auf jeder Serverseite wiederverwenden. In Ihrem Fall erhalten Sie möglicherweise den Dateinamen von
basename
Dann können Sie eine Helfer-Bash-Funktion schreiben wie:
aber in meinem Fall ist der Dateiname nicht einmal Teil der URL, er kommt mit inhaltlicher Disposition; mit curl ist die Kommandozeile
Sie können die
-fSL
Handles ignorieren , wenn die Serverseite 302 Redirection ausgibt. den-R
Zeitstempel für die Serverseite,-J
um die Serverseite zu berücksichtigenContent-Disposition
und-O
zum Download-Verhalten zu wechseln, anstatt auf dem Terminal zu sichern;Es leidet jedoch immer noch unter der Weigerung, das Überschreiben zu verweigern, wenn der Dateiname vorhanden ist. Ich möchte, dass es überschrieben wird, wenn der serverseitige
Last-Modified
Zeitstempel neuer ist.endet mit einer wget-Lösung, die dies kann:
Das
-N
ist, den serverseitigen Zeitstempel zu überprüfen und nur zu überschreiben, wenn die serverseitige Version neu ist.--content-disposition
istContent-Disposition
Header zu betrachten ; Das Standardverhalten von wget ist das Herunterladen auf den von der Serverseite angegebenen Dateinamen.In Ihrem Fall ist es nur so, wenn Sie sich nicht für den Zeitstempel interessieren
quelle