Faça o download do arquivo com nome real por wget

8

Estou tentando baixar um arquivo por meio de HTTP de um site usando wget .

Quando eu uso:

wget http://abc/geo/download/?acc=GSE48191&format=file

Eu recebo apenas um arquivo chamado index.html?acc=GSE48191 .

Quando eu uso:

wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm

Eu recebo asd.rpm , mas quero fazer o download com o nome real e não quero alterar manualmente o nome do arquivo baixado.

    
por Neha 26.09.2017 / 07:58

2 respostas

30

wget --content-disposition 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

O arquivo que você está baixando é um tar archive (um arquivo binário), fornecido por um link dinâmico de um servidor da web. wget normalmente salvaria o arquivo usando parte do URL que você está usando, mas nesse caso é apenas um ponto de extremidade da API REST (ou algo semelhante), portanto, o nome seria hostil para trabalhar (ele ainda seria válido nome e o conteúdo do arquivo seria o mesmo).

No entanto, neste caso, o servidor fornece um cabeçalho "Content Disposition" contendo o nome real do arquivo, que wget é capaz de usar se você usar a opção --content-disposition . Esta opção está marcada como "experimental" no meu manual para wget .

Você também precisa citar o URL para que o shell não interprete os caracteres & e ? nele.

O equivalente usando curl :

curl -J -O 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Ou usando as opções longas equivalentes:

 curl --remote-header-name --remote-name 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Depois de fazer o download do arquivo, você precisa descompactá-lo:

tar -xvf GSE48191_RAW.tar

Devido à maneira como esse arquivo específico foi criado, ele irá descompactar os arquivos do arquivo no diretório atual (assim, criar um novo diretório, mover o arquivo e descompactá-lo pode ser uma boa idéia). Os arquivos neste arquivo são gzip -compressed CEL files.

    
por 26.09.2017 / 08:25
8

O shell faz a interpretação usual de caracteres, especialmente ? como caractere curinga (que não importa aqui) e & como "colocado em segundo plano". Você deveria ter notado o último, porque a resposta do shell é diferente de um comando direto.

Então você precisa citar:

wget 'http://abc/geo/download/?acc=GSE48191&format=file'
    
por 26.09.2017 / 08:10