wget с подстановочными знаками при загрузке http

Мне нужно загрузить файл с помощью wget, однако я точно не знаю, каким будет имя файла.

https://foo/bar.1234.tar.gz 

Согласно странице man , wget позволяет вам отключать и использовать globbing при работе с ftp-сайтом, однако у меня есть URL-адрес http.

Как я могу использовать подстановочный знак при использовании 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/ 

Существует веская причина, что это не может работать напрямую с HTTP, и это то, что URL-адрес не является файловым путем, хотя использование / в качестве разделителя может сделать его похожим на один, и иногда они соответствуют. 1

Традиционно (или, исторически) веб-серверы часто выполняют зеркальные иерархии каталогов (для некоторых – например, Apache – это своего рода интеграл) и даже предоставляют индексы каталогов, подобные файловой системе. Однако об этом HTTP-протоколе ничего не требуется.

Это важно, потому что если вы хотите применить glob, скажем, все, что является подходом к http://foo/bar/ , если только сервер не предоставляет какой-либо механизм для предоставления вам такого (например, вышеупомянутого индекса), ничего нет применить его glob to . Для поиска нет файловой системы. Например, только потому, что вы знаете, что есть страницы http://foo/bar/one.html и http://foo/bar/two.html это не значит, что вы можете получить список файлов и подкаталогов через http://foo/bar/ . Это было бы полностью в протоколе для сервера, чтобы вернуть 404 для этого. Или он может вернуть список файлов. Или он может отправить вам приятный jpg-файл. И т.п.

Таким образом, здесь нет стандарта, который wget может использовать. AFAICT, wget работает, чтобы отразить иерархию путей , активно изучая ссылки на каждой странице . Другими словами, если вы рекурсивно зеркалируете http://foo/bar/index.html он загружает index.html а затем извлекает ссылки, которые являются подпутью этого. 2 Переключатель -A – это просто фильтр, который применяется в этом процессе.

Короче говоря, если вы знаете, что эти файлы индексируются где-то, вы можете начать с того, что используете -A . Если нет, то вам не повезло.


1. Конечно, URL-адрес FTP также является URL-адресом. Однако, хотя я мало знаю о протоколе FTP, я думаю, исходя из его природы, что это может быть форма, которая допускает прозрачное globbing.

2. Это означает, что может существовать допустимый URL http://foo/bar/alt/whatever/stuff/ , который не будет включен, потому что он никоим образом не связан ни с чем в наборе вещей, связанных с http://foo/bar/index.html . В отличие от файловых систем, веб-серверы не обязаны делать макет своего контента прозрачным и не нужно делать это интуитивно очевидным способом.