Использование подстановочных знаков в запросе wget или curl
Можно ли использовать подстановочные знаки в wget-запросах при загрузке из каталогов? В принципе, у меня есть сайт, скажем, www.download.example.com/dir/version/package.rpm
. В любом случае каталог версий постоянно меняется и иногда содержит несколько пакетов RPM. Есть ли единственный запрос wget, который мог бы получить меня только и все пакеты в каталоге version
, не зная, что это за версия? В моем идеальном мире запрос будет примерно таким:
wget www.download.example.com/dir/*/*.rpm
Если есть способ сделать это с помощью curl
, это тоже сработает.
Ответы
Ответ 1
Вы не можете использовать подстановочные знаки в wget
, но флаг -A
должен работать. Из wget manpage:
Вы хотите загрузить все gif из каталога на http-сервере. Вы пробовали wget http://www.server.com/dir/*.gif
, но это не сработало, потому что поиск HTTP не поддерживает globbing. В этом случае используйте: wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
Изменить: найденный связанный вопрос
Что касается каталогов:
Здесь есть утилита LFTP
, которая имеет некоторую поддержку для подстановки. Взгляните на manpage. Там еще один вопрос о Linux и Unix, который охватывает его использование в сценарии, подобном вашему.
Ответ 2
Если вы можете найти шаблон в своем запросе, вы можете использовать расширение bash для выполнения этой задачи.
Например, в вашем случае вы можете использовать что-то вроде:
wget www.download.example.com/dir/{version,old}/package{00..99}.rpm
Кроме того, вы можете объединить это с параметрами -A
и -R
, чтобы отфильтровать результаты.
Ответ 3
Несмотря на то, что вышеупомянутое решение работает, оно терпит неудачу, когда вы просто хотите загрузить определенные каталоги, но не все. Например, если у вас есть:
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
. (?)