Подтвердить что ты не робот

Использование подстановочных знаков в запросе wget или curl

Можно ли использовать подстановочные знаки в wget-запросах при загрузке из каталогов? В принципе, у меня есть сайт, скажем, www.download.example.com/dir/version/package.rpm. В любом случае каталог версий постоянно меняется и иногда содержит несколько пакетов RPM. Есть ли единственный запрос wget, который мог бы получить меня только и все пакеты в каталоге version, не зная, что это за версия? В моем идеальном мире запрос будет примерно таким:

wget www.download.example.com/dir/*/*.rpm

Если есть способ сделать это с помощью curl, это тоже сработает.

4b9b3361

Ответ 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. (?)