Używam curl w tej składni:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Jeśli uruchomię to polecenie dwa razy, otrzymam dwa pliki:
myfile.jpg
myfile-1.jpg
Jak mogę powiedzieć CURL, że chcę zastąpić plik, jeśli istnieje?
Używam curl w tej składni:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Jeśli uruchomię to polecenie dwa razy, otrzymam dwa pliki:
myfile.jpg
myfile-1.jpg
Jak mogę powiedzieć CURL, że chcę zastąpić plik, jeśli istnieje?
curl
wersja w którym systemie?Odpowiedzi:
Posługiwać się:
źródło
noclobber
włączonej opcji (set +o noclobber
).Napotkałem ten sam problem i chcę ponownie użyć tej samej nazwy pliku niezależnie od strony serwera, w twoim przypadku możesz uzyskać nazwę pliku według
basename
możesz napisać funkcję bash pomocnika, taką jak:
ale w moim przypadku nazwa pliku nie jest nawet częścią adresu url, lecz zawiera dyspozycję zawartości; z curl wierszem poleceń jest
możesz zignorować te
-fSL
uchwyty, jeśli po stronie serwera nastąpi przekierowanie 302;-R
na stronie serwera znacznika czasu,-J
aby rozważyć stronie serweraContent-Disposition
, i-O
aby przejść do pobierania zachowania zamiast antydumpingowe na terminalu;jednak nadal cierpi z powodu odmowy zastąpienia, jeśli nazwa pliku istnieje; Chcę go zastąpić, jeśli
Last-Modified
znacznik czasu po stronie serwera jest nowszy;kończy się rozwiązaniem wget, które potrafi to zrobić:
-N
jest sprawdzenie po stronie serwera tiemstamp i nadpisać tylko po stronie serwera ma nową wersję;--content-disposition
rozważaContent-Disposition
nagłówek; a domyślnym zachowaniem wget jest pobieranie, na nazwę pliku podaną po stronie serwera.w twoim przypadku, jeśli nie obchodzi Cię znacznik czasu, to po prostu
źródło