wgetを介して実際の名前のファイルをダウンロードします。

wgetを介して実際の名前のファイルをダウンロードします。

.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'

ダウンロード中のファイルは、tarWebサーバーの動的リンクを介して提供されるアーカイブ(バイナリファイル)です。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'

関連情報