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


9

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

私が使うとき:

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が、私は実際の名前でダウンロードしたい、と手動でダウンロードしたファイルの名前を変更したくありません。


次回、バイオインフォマティクスについてこの種の質問をしたいと思うかもしれません。ここでも話題になっていますが、そのままご利用いただけますが、現場で働いている人からより多くの助けを得られるかもしれません。
terdon

3
@terdon バイオインフォマティクスに関するトピックでwgetおよび* nixシェルの動作についてどのように質問していますか?
CVn 2017

1
@MichaelKjörlingがNCBIから情報を抽出することになるので、それを提案しました。その答えには、シェルソリューションではなく、OPが探している情報を取得するためのより単純で直接的なアプローチが含まれる可能性があります。たとえば、「ここからこの情報をより簡単に取得できます」のようなものです。
terdon

見て--trust-server-namesの引数wget-
ivanivan

3
URLによって参照されるリソースの「実際の名前」などは存在しないことに注意することが重要です。Webサーバーは、いくつかのコンテンツと、場合によってはそのコンテンツを何らかの方法で説明するいくつかのヘッダーでリクエストに応答しますが、ファイルが含まれている必要はありません。
IMSoP 2017

回答:


30
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

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


8

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

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

wget 'http://abc/geo/download/?acc=GSE48191&format=file'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.