Obtém o nome do arquivo a partir do URL do wget - trust-server-names [duplicate]

0

Grande parte do URL de redirecionamento do site permite a você a última versão de um binário.

Por exemplo:

wget https://download.mozilla.org/?product=firefox-aurora-latest-l10n&os=linux64&lang=fr

Permitirá que você baixe o Firefox Developper Edition mais recente. O arquivo de saída será " firefox-50.0a2.fr.linux-x86_64.tar.bz2 ".

Mas

wget https://download.mozilla.org/?product=firefox-aurora-latest-l10n&os=linux64&lang=fr -P $HOME

leva a um nome de arquivo de saída como: "? product = firefox-aurora-latest-l10n & os = linux64 & lang = fr ".

Então eu vou usar:

wget https://download.mozilla.org/?product=firefox-aurora-latest-l10n&os=linux64&lang=fr -P $HOME --trust-server-names

para redirecionar para o bom nome do arquivo: " firefox-50.0a2.fr.linux-x86_64.tar.bz2" .

Mas na próxima atualização, o nome do arquivo será diferente.

Atualmente, estou escrevendo um script, então preciso fazer o download do arquivo com o nome de arquivo válido.

Minha pergunta é:

Como posso obter o nome do arquivo baixado em um $ var para usá-lo próximo, por exemplo, para extrair o arquivo?

Observação: não posso usar o basename, pois o nome não está no URL.

Observação 2: uso --trust-server-names porque --content-disposition é experimental e não é confiável.

    
por noraj 29.08.2016 / 20:51

1 resposta

0

O nome do arquivo pode ser visto na saída stderr do comando em uma linha como

Saving to: 'firefox-50.0a2.fr.linux-x86_64.tar.bz2'

Então você pode capturar o stderr para um arquivo ou pipe e extrair a string

if wget ... 2>log
then filename=$(awk <log '/^Saving to:/{print substr($0,13,length($0)-14)}')
...

Ou se você quiser, pode obter o nome do arquivo do redirecionamento fazendo

wget -S --max-redirect=0 ...

Isso não recuperará o arquivo, mas stderr mostrará o novo local para ele:

Location: https://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-aurora-l10n/firefox-50.0a2.fr.linux-x86_64.tar.bz2

e você pode extrair o nome do arquivo.

    
por 29.08.2016 / 21:27

Tags