Estou usando curl nesta sintaxe:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Se eu executar este comando duas vezes, obtenho dois arquivos:
myfile.jpg
myfile-1.jpg
Como posso dizer ao CURL que quero substituir o arquivo, se ele existir?
Estou usando curl nesta sintaxe:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Se eu executar este comando duas vezes, obtenho dois arquivos:
myfile.jpg
myfile-1.jpg
Como posso dizer ao CURL que quero substituir o arquivo, se ele existir?
Respostas:
Usar:
curl http://mysite.com/myfile.jpg > myfile.jpg
noclobber
opção ativada ( set +o noclobber
).
Encontrei o mesmo problema e desejo reutilizar o mesmo nome de arquivo, independentemente do servidor, no seu caso, você pode obter o nome de arquivo basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
então você pode escrever uma função auxiliar bash como:
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
mas, no meu caso, o nome do arquivo nem faz parte do URL, ele vem com a disposição do conteúdo; com enrolar a linha de comando é
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
você pode ignorar o que -fSL
ele lida se o lado do servidor der redirecionamento 302; o -R
timestamp do lado do servidor, -J
considerar o lado do servidor Content-Disposition
e -O
mudar para o comportamento de download em vez de descarregar no terminal;
no entanto, ele ainda se recusa a substituir se o nome do arquivo existir; Quero que ele sobrescreva se o Last-Modified
registro de data e hora do lado do servidor for mais recente;
acaba com uma solução wget capaz de:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
o -N
é verificar o tempo do servidor no selo e sobrescrever somente quando o servidor tiver uma nova versão; --content-disposition
é considerar Content-Disposition
cabeçalho; O comportamento padrão do wget é fazer o download, com o nome de arquivo fornecido no servidor.
no seu caso, se você não se importa com registro de data e hora, é apenas
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
versão em que sistema?