web-dev-qa-db-ja.com

wgetによる実際の名前のファイルのダウンロード

wgetを使用してWebサイトからHTTP経由でファイルをダウンロードしようとしています。

私が使うとき:

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

index.html?acc=GSE48191というファイルのみが表示されます。

私が使うとき:

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

asd.rpmを取得しましたが、実際の名前でダウンロードしたいのですが、ダウンロードしたファイルの名前を手動で変更したくありません。

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

ダウンロードするファイルはtarアーカイブ(バイナリファイル)で、Webサーバーからのダイナミックリンクによって提供されます。 wgetは通常、使用しているURLの一部を使用してファイルを保存しますが、この場合は、REST APIエンドポイント(または同様の))なので、名前は扱いにくい(それでも有効な名前であり、ファイルの内容は同じになる)。

ただし、この場合、サーバーは実際のファイル名を含む "Content Disposition"ヘッダーを提供します。wgetは、--content-dispositionオプションを使用する場合に使用できます。このオプションは、私のマニュアルでwgetについて「実験的」とマークされています。

また、シェルが&および?文字を解釈しないように、URLを引用符で囲む必要があります。


curlを使用する同等のもの:

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

または、同等の長いオプションを使用します。

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

ファイルをダウンロードしたら、解凍する必要があります。

tar -xvf GSE48191_RAW.tar

この特定のアーカイブの作成方法により、これによりアーカイブのファイルがcurrentディレクトリに解凍されます(新しいディレクトリを作成し、そこにアーカイブを移動して解凍することをお勧めします)。このアーカイブ内のファイルは、gzip-圧縮されたCELファイルです。

30
Kusalananda

シェルは文字の通常の解釈を行います。特に?をワイルドカード(ここでは関係ありません)として解釈し、&を「バックグラウンドに配置」して解釈します。シェルの応答はダイレクトコマンドとは異なるため、後者に気づくはずです。

だからあなたは引用する必要があります:

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