Я столкнулся с той же проблемой, и я хочу повторно использовать то же имя файла, что и на стороне сервера, в вашем случае вы можете получить имя файла по 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
, который он обрабатывает, если серверная сторона дает 302 Redirection; -R
для отметки времени на стороне сервера, -J
для рассмотрения на стороне сервера Content-Disposition
и -O
для переключения на поведение загрузки вместо сброса на терминал,
однако он все еще страдает отказом от перезаписи, если имя файла существует; Я хочу, чтобы он перезаписывался, если на стороне сервера Last-Modified
отметка времени новее;
заканчивается решением wget, которое может сделать это:
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
-N
означает проверять временную метку на стороне сервера и перезаписывать только при наличии новой версии на стороне сервера; - Content-Disposition
должен учитывать заголовок Content-Disposition
; а по умолчанию wget загружает файл с именем файла, указанным на стороне сервера.
в вашем случае, если вам не нужна временная метка, это просто
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
Попробуйте удалить точку из шаблона, т.е.:
for f in xxx*;
do
uniquename="${f%%(wrx*zip}";
echo "${uniquename}";
done
Он берет файлы, имена которых имеют вид xxx[0-9][0-9][0-9[0-9]ss(wrx-mmm).zip
, и преобразует их в строки вида xxx[0-9][0-9][0-9[0-9]ss
. Это то, чего вы пытаетесь достичь?