ディレクトリからダウンロードするときにwgetクエリでワイルドカードを使用できますか?基本的に、私はサイトを持っています、たとえば、www.download.example.com/dir/version/package.rpm
。ただし、バージョンディレクトリは常に変更され、複数のRPMパッケージが含まれることがあります。そのバージョンが何であるかを知らずに、私とversion
ディレクトリ内のすべてのパッケージのみを取得する単一のwgetクエリはありますか?私の理想的な世界では、クエリは次のようになります。
wget www.download.example.com/dir/*/*.rpm
curl
でこれを行う方法があれば、それも同様に機能します。
wget
ではワイルドカードを使用できませんが、-A
フラグが機能するはずです。 wget manpage から:
Httpサーバー上のディレクトリからすべてのgifをダウンロードする必要があります。あなたがしようとした
wget http://www.server.com/dir/*.gif
、ただし、httpの取得ではグロビングがサポートされていないため、機能しませんでした。その場合、次を使用します:wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
編集: 関連する質問 が見つかりました
ディレクトリについて:
LFTP
と呼ばれるユーティリティがあります。これは、グロビングをサポートしています。 manpage を見てください。もう1つ LinuxとUnixの質問 があり、これはあなたと似たシナリオでの使用法をカバーしています。
クエリでパターンを見つけることができる場合、bash brace拡張を使用してこのタスクを実行できます。
たとえば、あなたの場合、次のようなものを使用できます。
wget www.download.example.com/dir/{version,old}/package{00..99}.rpm
また、これを-A
および-R
パラメーターと組み合わせて、結果をフィルターに掛けることができます。
上記のソリューションの種類は機能しますが、すべてではなく特定のディレクトリをダウンロードするだけでは失敗します。たとえば、次の場合:
http://site.io/like/
http://site.io/like2/
http://site.io/nolike/
代わりに、テキストファイルに目的のディレクトリ名を入力します。例:dirs.txt:
like/
like2/
次に、wget
を次のコマンドオプション-i dirs.txt -B <base-URL>
とともに使用します。
wget -nH -nc -np -r -e robots=off -R "index.html*" -i dirs.txt -B http://site.io/
なぜなら、-A
および-R
リストでディレクトリを使用できるとは思わないからです。 (?)