Obtém a lista de arquivos em uma listagem de diretório HTML

1

Posso obter todos os arquivos no site de patches do bash fazendo o download deles em uma sequência :

SEQ=$(seq -f "%03g" 1 30)
for i in $SEQ; do 
  wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i;
done

Mas então eu teria que saber o número máximo.

Existe a possibilidade de obter a listagem e extrair todos os arquivos de patch para download?

    
por rubo77 06.10.2014 / 17:12

2 respostas

2

Você pode usar wget com o download recursivo:

wget -nc -nd -nH -np -r -R '*.*'  http://ftp.gnu.org/gnu/bash/bash-4.3-patches/

Explicação:

  • -nc : no-clobber (não sobrescrever arquivos existentes), provavelmente não é necessário.
  • -nd : não crie hierarquia de diretórios.
  • -nH : não crie diretório baseado no nome do host. Ou você encontraria tudo baixado em um diretório chamado ftp.gnu.org .
  • -np : nunca suba para o diretório pai.
  • -r : faça o download recursivamente.
  • -R '*.*' : Rejeita tudo com . no nome do arquivo (pula coisas como index.html e assim por diante). Uma lista de aceitação também pode ser usada. O arquivo é baixado, mas descartado .
por 06.10.2014 / 21:31
0
for i in $(seq -f "%03g" 1 999); do 
  wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i
  if [[ $? -ne "0" ]]; then
    MAX=$(expr $i - 1)
    break;
  fi
done
echo $MAX files downloaded
    
por 06.10.2014 / 18:00