O wget ou qualquer outro downloader de arquivo http no Ubuntu suporta curingas?

O wget ou qualquer outro downloader de arquivo http no Ubuntu suporta curingas?

Eu gostaria de poder escrever um script bash para atualizar automaticamente minhas extensões do MediaWiki e acho que usarei este sitehttps://extdist.wmflabs.org/dist/extensions/para fazer isso. Mas como você pode ver, cada nome de arquivo tarball tem uma combinação aleatória (ou assim me parece) de letras e números após o traço final (-). Então, o que eu gostaria é de alguma forma de baixar apenas arquivos com esse tipo de nome, extname-REL1_25*.tar.gzonde * é o local onde o curinga no nome entraria e extnamese referiria ao nome da extensão que desejo.

Responder1

expansão de chave wget

Use a expansão de chaves com wget para baixar vários arquivos de acordo com um padrão.

Exemplo:

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

O sinalizador opcional -c continua o download se ele for pausado ou interrompido no mesmo ponto onde foi interrompido. A -copção é útil quando você está baixando um grande número de arquivos e deseja baixar todos os arquivos em lote sem interrupções.

wget baixa vários arquivos de uma lista

Exemplo:

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    

opções recursivas de aceitação/rejeição do wget

Opções recursivas de aceitação/rejeição
    -A acclist --accept acclist
    -R lista rej --rejeitar lista rej.
        Especifique listas separadas por vírgulas de sufixos ou padrões de nomes de arquivos para
        aceitar ou rejeitar. Observe que se algum dos caracteres curinga, *,
        ?, [ou], aparecem em um elemento de acclist ou rejlist, será
        tratado como um padrão, em vez de um sufixo. Neste caso, você
        tem que colocar o padrão entre aspas para evitar que seu shell
        de expandi-lo, como em-A "*.mp3"ou-A '*.mp3'.

Exemplo:

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  

Ambas -Aas -Ropções baixam todos os arquivos e, em seguida, as opções aceitar e rejeitar excluem os arquivos baixados que não correspondem ao padrão. Isso é terrivelmente ineficiente. Uma maneira mais rápida de fazer isso seria fazer a correspondência de padrões no arquivo list.txt para remover todos os arquivos indesejados de list.txt antes de baixar qualquer coisa.

Suponha que você queira baixar todos os arquivos dohttps://extdist.wmflabs.org/dist/extensions/que satisfaçam as seguintes condições:

  • versão 1.25
  • apenas as extensões MediaWiki selecionadas

Supondo que você já tenha criado um arquivo list.txt que contém todos os links emhttps://extdist.wmflabs.org/dist/extensions/, você abre list.txt em um editor de texto que suporta correspondência de padrões e filtra o conteúdo de list.txt para corresponder às linhas que possuem a string 1_25(que se refere à versão 1.25) e, em seguida, filtra esses resultados para corresponder às linhas que possuem aproximadamente 20 extensões (o o número 20 não é importante) que você deseja baixar. Em seguida, escreva os resultados em um novo arquivo chamado new-list.txt (o nome do arquivo new-list.txt não é importante) e baixe os vários arquivos (cerca de 20 neste exemplo) usando new-list.txt após a -iopção do wget para ler URLs de um arquivo local ou externo.

Uma melhoria adicional neste método seria reduzir o número de extensões correspondentes, filtrando o conteúdo de list.txt para corresponder às extensões que contêm strings que correspondem a mais de uma extensão que você está procurando. Por exemplo, se a string wikicorresponder a várias extensões que você está procurando, você poderá filtrar o conteúdo de list.txt para corresponder wikie economizar um pouco de tempo. Emhttps://extdist.wmflabs.org/dist/extensions/existem cinco links que contêm ambos 1_25e wikivocê pode encontrar todos os cinco links com duas correspondências de padrão.

Responder2

Não, é impossível com curingas. Mas nesta situação o wget funcionará com download recursivo -https://unix.stackexchange.com/questions/25340/download-recursively-with-wget

informação relacionada