Поддерживает ли wget или любой другой загрузчик файлов http в Ubuntu подстановочные знаки?

Поддерживает ли wget или любой другой загрузчик файлов http в Ubuntu подстановочные знаки?

Я хотел бы иметь возможность написать bash-скрипт для автоматического обновления моих расширений MediaWiki и думаю, что воспользуюсь этим сайтом.https://extdist.wmflabs.org/dist/extensions/сделать это. Но как вы можете видеть, каждое имя файла tarball имеет случайную (или мне так кажется) комбинацию букв и цифр после последнего дефиса (-). Поэтому мне бы хотелось каким-то образом загружать только файлы с таким именем, extname-REL1_25*.tar.gzгде * — это место, где в имени будет подстановочный знак, и extnameссылается на имя нужного мне расширения.

решение1

расширение скобок wget

Используйте раскрытие фигурных скобок с wget для загрузки нескольких файлов по шаблону.

Пример:

wget -c https://extdist.wmflabs.org/dist/extensions/GoogleDocTag-REL1_{22-45203b7,23-249c6f2,24-3186a71,25-10e101f}.tar.gz

Необязательный -c флаг продолжает загрузку, если она приостановлена ​​или прервана с того же места, где она была остановлена. Опция -cполезна, когда вы загружаете большое количество файлов и хотите загрузить все файлы пакетом без перерывов.

wget загрузить несколько файлов из списка

Пример:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -E -H -k -K -p -e robots=off -i ./list.txt    

wget рекурсивные параметры принятия/отклонения

Рекурсивные параметры принятия/отклонения
    -A acclist --принять acclist
    -R список_записей --reject список_записей
        Укажите списки суффиксов или шаблонов имен файлов, разделенные запятыми.
        принять или отклонить. Обратите внимание, что если какой-либо из подстановочных знаков, *,
        ?, [ или ], появляются в элементе acclist или rejlist, это будет
        рассматривается как шаблон, а не как суффикс. В этом случае вы
        необходимо заключить шаблон в кавычки, чтобы предотвратить вашу оболочку
        от его расширения, как в-А "*.mp3"или-А '*.mp3'.

Пример:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -A "Vector*.tar.gz" -E -H -k -K -p -e robots=off -i ./list.txt  

Оба варианта -Aи -Rзагружают все файлы, а затем варианты принять и отклонить удаляют загруженные файлы, которые не соответствуют шаблону. Это ужасно неэффективно. Более быстрый способ сделать это — выполнить сопоставление шаблона в файле list.txt, чтобы удалить все нежелательные файлы из list.txt перед загрузкой чего-либо.

Предположим, что вы хотите скачать все файлы сhttps://extdist.wmflabs.org/dist/extensions/которые удовлетворяют следующим условиям:

  • версия 1.25
  • только выбранные расширения MediaWiki

Предположим, что вы уже создали файл list.txt, содержащий все ссылки вhttps://extdist.wmflabs.org/dist/extensions/, вы открываете list.txt в текстовом редакторе, который поддерживает сопоставление с шаблоном, и фильтруете содержимое list.txt для сопоставления строк, имеющих строку 1_25(которая относится к версии 1.25), а затем фильтруете эти результаты для сопоставления строк, имеющих ~20 расширений (число 20 не имеет значения), которые вы хотите загрузить. Затем записываете результаты в новый файл с именем new-list.txt (имя файла new-list.txt не имеет значения) и загружаете несколько файлов (~20 в этом примере), используя new-list.txt после -iопции wget для чтения URL из локального или внешнего файла.

Дальнейшее улучшение этого метода будет заключаться в уменьшении количества расширений для сопоставления путем фильтрации содержимого list.txt для сопоставления расширений, содержащих строки, которые соответствуют более чем одному расширению, которое вы ищете. Например, если строка wikiсоответствует нескольким расширениям, которые вы ищете, вы можете отфильтровать содержимое list.txt для сопоставления wikiи сэкономить немного времени. Вhttps://extdist.wmflabs.org/dist/extensions/есть пять ссылок, которые содержат 1_25и , wikiи вы можете найти все пять ссылок с двумя совпадениями шаблона.

решение2

Нет, это невозможно с подстановочными знаками. Но в этой ситуации wget будет работать с рекурсивной загрузкой -https://unix.stackexchange.com/questions/25340/download-recursively-with-wget

Связанный контент