.NETを使用してHTTP経由でWebサイトからファイルをダウンロードしようとしていますwget
。
私が使用するとき:
wget http://abc/geo/download/?acc=GSE48191&format=file
私はただ1つの名前を取得しますindex.html?acc=GSE48191
。
私が使用するとき:
wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm
わかりますがasd.rpm
、実際の名前でダウンロードしたいとダウンロードしたファイルの名前を手動で変更したくありません。
答え1
wget --content-disposition 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'
ダウンロード中のファイルは、tar
Webサーバーの動的リンクを介して提供されるアーカイブ(バイナリファイル)です。wget
通常、ファイルを保存するために使用するURLの一部を使用しますが、この場合、これは単にREST APIエンドポイント(または同様のもの)なので、名前は使いやすくありません(まだ有効な名前であり、ファイルの内容は同じです)。
ただし、この場合、サーバーは実際のファイル名を含む「コンテンツ処理」ヘッダーを提供し、そのwget
オプションを使用すると使用できます--content-disposition
。このオプションは私のマニュアルに「実験的」とマークされていますwget
。
また、シェルがURLに含まれる&
アンパサンド?
文字を解釈しないように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
ファイルです。
答え2
シェルは通常の方法で文字を解釈します。特に?
ワイルドカード(ここでは重要ではない)と&
「背景に入れる」と解釈します。シェル応答が直接コマンドと異なるため、後者に気付いたはずです。
したがって、以下を引用する必要があります。
wget 'http://abc/geo/download/?acc=GSE48191&format=file'