*/download.php?standard=yes&file=*.Zip
)によって行われるリダイレクトであるページにすべての* .Zipファイルをダウンロードしたいと思います。具体的には、ここからOsmAndマップをダウンロードしたいと思います: http://download.osmand.net/rawindexes/
どうすればいいのですか?
wget
を使用して、MAPS.MEのマップと同様のことを行うことができます。
wget -rl1 --accept="mwm" http://direct.mapswithme.com/direct/latest/
ただし、この場合、リンクは直接であり、ファイル名に問題はありませんでした。
curl -L
も使用しようとしましたが、再帰がなく、そのページで使用されている種類のリダイレクトでは機能しないようです。
Wgetは正常に機能しますが、エスケープされていないため、URLを引用符で囲む必要があります。
つまり.
wget 'http://download.osmand.net/download.php?standard=yes&file=Afghanistan_asia_2.obf.Zip' -O Afghanistan_asia_2.obf.Zip
-Oオプションは、出力名を制御します。ファイル名のリストがあれば、それを実行するシェルスクリプトを作成するのはかなり簡単なはずです。
編集:ページをダウンロードしてファイルパターンの正規表現検索を実行すると、ファイル名を取得できます。
wget -nv 'http://download.osmand.net/rawindexes/' -O - | grep -oE "file=[A-Za-z0-9_]*.obf.Zip" | cut -c6-
これをxargsと組み合わせて、wgetに直接パイプして各ファイルをダウンロードすることができます。
xargs -I{} wget 'http://download.osmand.net/download.php?standard=yes&file={}' -O {}
または、完全な1行のコマンド(Cygwinで機能し、他の* nixでは引用符とxargsを操作する必要がある場合があります):
wget -nv 'http://download.osmand.net/rawindexes/' -O - | grep -oE "file=[A-Za-z0-9_]*.obf.Zip" | cut -c6- | xargs -I{} wget 'http://download.osmand.net/download.php?standard=yes&file={}' -O {}
一部のファイル名には「-」が含まれています。したがって、ファイルのリストを取得するためのスクリプトは、1文字で変更する必要があります。これは私のために働きます:
wget -nv 'http://download.osmand.net/rawindexes/' -O - | grep -oE "file=[A-Za-z0-9_-]*.obf.Zip" | cut -c6-