Я використовую 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
тоді ви можете написати функцію помічника баш-типу:
➸ 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
обробку, якщо сторона сервера дає перенаправлення 302; -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
версія в якій системі?