Bash Манипуляции со строкой, когда строка содержит круглые скобки

Я столкнулся с той же проблемой, и я хочу повторно использовать то же имя файла, что и на стороне сервера, в вашем случае вы можете получить имя файла по 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
0
18.04.2019, 02:03
1 ответ

Попробуйте удалить точку из шаблона, т.е.:

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. Это то, чего вы пытаетесь достичь?

1
28.01.2020, 02:40

Теги

Похожие вопросы