Мне нужно скачать файл с помощью wget, однако я точно не знаю, каким будет имя файла.
https://foo/bar.1234.tar.gz
Согласно справочной странице , 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"
curl "http://example.com/picture[1-10].jpg" -o "picture#1.jpg"
-e robots=off
параметр не подчиняться robots.txt: stackoverflow.com/a/11124664/1097104-nH
и--cut-dirs=<number>
был также полезенОтветы:
Я думаю, что эти переключатели будут делать то, что вы хотите с
wget
:пример
источник
Есть веская причина, по которой это не может работать напрямую с HTTP, и это то, что URL не является путем к файлу, хотя использование
/
в качестве разделителя может сделать его похожим на один, и они иногда соответствуют. 1Традиционно (или исторически) веб-серверы часто отражают иерархию каталогов (для некоторых - например, Apache - это своего рода интеграл) и даже предоставляют индексы каталогов, очень похожие на файловую систему. Однако ничто в протоколе HTTP не требует этого.
Это очень важно, потому что если вы хотите применить Glob на говорим, все , что является подпутем
http://foo/bar/
, если сервер не предоставляет какой - то механизм , чтобы предоставить вам такой (например , упомянутый выше индекс), нет ничего , чтобы применить его в Glob к . Там нет файловой системы для поиска. Например, только потому, что вы знаете, что есть страницы,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, я предполагаю, исходя из его природы, что он может иметь форму, которая допускает прозрачное глобирование.
2. Это означает, что может быть действительный URL
http://foo/bar/alt/whatever/stuff/
, который не будет включен, потому что он никоим образом не связан ни с чем в наборе вещей, связанных сhttp://foo/bar/index.html
. В отличие от файловых систем, веб-серверы не обязаны делать макет своего контента прозрачным, и при этом им не нужно делать это интуитивно очевидным способом.источник
Приведенное выше решение «-A pattern» может не работать с некоторыми веб-страницами. Это мой обходной путь, с двойным wget:
wget
страницаgrep
для картиныwget
файлы)Пример: предположим, что это новостная страница подкаста, и я хочу 5 mp3-файлов сверху страницы:
The
grep
ищет двойные кавычки без пробелов, которые содержат://
и мое имя файлаpattern
.источник
bash
. Справочную страницу. RANDOM Каждый раз при обращении к этому параметру генерируется случайное целое число от 0 до 32767.