Wgetを使用してファイルをダウンロードする必要がありますが、ファイル名が正確にわかりません。
https://foo/bar.1234.tar.gz
man page によると、wgetを使用すると、ftpサイトを処理するときにグロビングをオフまたはオンにできますが、httpのURLがあります。
Wgetの使用中にワイルドカードを使用するにはどうすればよいですか?私はgnu wgetを使用しています。
私が試したもの。
/usr/local/bin/wget -r "https://foo/bar.*.tar.gz" -P /tmp
更新
-Aを使用すると、サーバー上の.tar.gzで終わるすべてのファイルがダウンロードされます。
/usr/local/bin/wget -r "https://foo/" -P /tmp -A "bar.*.tar.gz"
更新
答えから、これは最終的には機能した構文です。
/usr/local/bin/wget -r -l1 -np "https://foo" -P /tmp -A "bar*.tar.gz"
これらのスイッチはwget
であなたが望むことをするでしょう:
-A acclist --accept acclist
-R rejlist --reject rejlist
Specify comma-separated lists of file name suffixes or patterns to
accept or reject. Note that if any of the wildcard characters, *, ?,
[ or ], appear in an element of acclist or rejlist, it will be
treated as a pattern, rather than a suffix.
--accept-regex urlregex
--reject-regex urlregex
Specify a regular expression to accept or reject the complete URL.
$ wget -r --no-parent -A 'bar.*.tar.gz' http://url/dir/
上記の「-Aパターン」ソリューションは、一部のWebページでは機能しない場合があります。これは二重のwgetを使用した私の回避策です:
wget
ページgrep
wget
ファイル例:ニュースポッドキャストページで、ページの上部から5つのmp3ファイルが必要だとします。
wget -nv -O- https://example/page/ |
grep -o '[^"[:space:]]*://[^"[:space:]]*pattern[^"[:space:]]*\.mp3' |
head -n5 | while read x; do
sleep $(($RANDOM % 5 + 5)) ## to appear gentle and polite
wget -nv "$x"
done
grep
は、://
とファイル名pattern
を含む、二重引用符で囲まれたスペースなしのリンクを探しています。
オプション-ndを使用して、ディレクトリの階層なしですべてのファイルを現在のディレクトリに保存します。例:
wget -r -nd --no-parent -A 'bar.*.tar.gz' http://url/dir/