Я использую 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
версия на какой системе?