Я использую curl в этом синтаксисе:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Если я запускаю эту команду дважды, я получаю два файла:
myfile.jpg
myfile-1.jpg
Как я могу сказать CURL, что я хочу перезаписать файл, если он существует?
Я использую curl в этом синтаксисе:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Если я запускаю эту команду дважды, я получаю два файла:
myfile.jpg
myfile-1.jpg
Как я могу сказать CURL, что я хочу перезаписать файл, если он существует?
Ответы:
Использование:
curl http://mysite.com/myfile.jpg > myfile.jpg
noclobberвключена опция ( set +o noclobber).
Я столкнулся с той же проблемой, и я хочу использовать одно и то же имя файла независимо от того, что серверная часть дает, в вашем случае вы можете получить имя файла по basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
тогда вы можете написать вспомогательную функцию bash, например:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
но в моем случае имя файла даже не является частью URL-адреса, оно идет с расположением содержимого; с curl командная строка
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
вы можете игнорировать -fSLдескрипторы it, если серверная часть дает 302 Redirection; -Rметка времени на стороне сервера, -Jчтобы учитывать сторону сервера Content-Dispositionи -Oпереключаться в режим загрузки вместо выгрузки на терминал;
Тем не менее, он по-прежнему страдает от отказа перезаписать, если имя файла существует; Я хочу, чтобы он перезаписывал, если Last-Modifiedвременная метка на стороне сервера новее;
в конечном итоге решение Wget, которое он может сделать так:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
-Nявляется проверка на стороне сервера tiemstamp и перезаписать только тогда , когда на стороне сервера имеет новую версию; --content-dispositionсчитать Content-Dispositionзаголовок; и поведение wget по умолчанию заключается в загрузке файла с именем, данным со стороны сервера.
в вашем случае, если вам не нужна метка времени, это просто
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curlверсия на какой системе?