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

1

Gostaria de poder escrever um script bash para atualizar automaticamente as minhas extensões do MediaWiki e acho que usarei o link deste site. para fazer isso. Mas como você pode ver, cada nome de arquivo do tarball tem uma combinação aleatória (ou assim, parece-me) de letras e números após o traço final (-). Então, o que eu gostaria é de uma forma de baixar apenas arquivos com esse tipo de nome extname-REL1_25*.tar.gz , onde * é o lugar onde o curinga no nome viria e extname refere-se à extensão que eu quero do nome.

    
por BH2017 17.06.2015 / 20:09

2 respostas

2

expansão de chaves cônicas

Use a expansão de chave 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 estiver em pausa ou interrompido no mesmo ponto em que foi interrompido. A opção -c é útil quando você está baixando um grande número de arquivos e deseja baixar todos os arquivos em um lote sem interrupções.

wget baixe 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    

wget opções recursivas de aceitar / rejeitar

Recursive Accept/Reject Options
    -A acclist --accept acclist
    -R rejlist --reject rejlist
        Specify comma-separated lists of file name suffixes or patterns to
        accept or reject. Note that if any of the wildcard characters, *,
        ?, [ or ], appear in an element of acclist or rejlist, it will be
        treated as a pattern, rather than a suffix.  In this case, you 
        have to enclose the pattern into quotes to prevent your shell 
        from expanding it, like in -A "*.mp3" or -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  

As opções -A e -R 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 do list.txt antes de baixar qualquer coisa.

Suponha que você queira baixar todos os arquivos do link que satisfaz as seguintes condições:

  • versão 1,25
  • apenas as extensões do MediaWiki selecionadas

Supondo que você já tenha feito um arquivo list.txt que contenha todos os links no link , abra a lista .txt em um editor de texto que suporte correspondência de padrões e filtre o conteúdo de list.txt para coincidir com as linhas que possuem a string 1_25 (que se refere à versão 1.25) e filtre os resultados para corresponder às linhas com ~ 20 extensões 20 não é importante) que você deseja baixar. Em seguida, grave os resultados em um novo arquivo chamado new-list.txt (o nome do arquivo new-list.txt não é importante) e baixe os arquivos múltiplos (~ 20 em número neste exemplo) usando new-list.txt após% do wget-i opção para ler URLs de um arquivo local ou externo.

Uma melhoria adicional nesse método seria reduzir o número de extensões a serem correspondidas, filtrando o conteúdo de list.txt para corresponder às extensões que contêm sequências que correspondem a mais de uma extensão que você está procurando. Por exemplo, se a string wiki corresponder a várias extensões que você está procurando, é possível filtrar o conteúdo de list.txt para corresponder a wiki e economizar um pouco de tempo. No link , há cinco links que contêm 1_25 e wiki e você pode encontrar todos os cinco links com dois combinações de padrões.

    
por karel 17.06.2015 / 20:51
0

Não, é impossível com curingas. Mas, nessa situação, o wget funcionará com o download recursivo - link

    
por Krzysztof Sawicki 17.06.2015 / 20:30