wget para obter lista de arquivos

3

Estou usando wget em um script bash para obter uma lista de arquivos de um site, os arquivos são sequenciais e estão no formato http://example.com/00001.csv etc.

Existe uma maneira de terminar / terminar o script quando eu bato no último arquivo?

Este é o script que tenho até agora.

#!/bin/bash 
url="example.com"; 
for a in {00000001..18923230} do 
wget -nc -q ${url}$a.csv 
done 
    
por Kevin Wincott 07.03.2014 / 17:22

2 respostas

6

A maneira mais simples seria verificar se o arquivo existe. Usando seu script atual:

#!/bin/bash 
url="example.com"; 
for a in {00000001..18923230}
do 
    wget -nc -q ${url}$a.csv || exit;
done 

Isso sairá assim que um dos arquivos não estiver disponível para download. Como alternativa, supondo que haja um arquivo index.html vinculado a esses, você pode fazer o download e grep para os nomes dos arquivos.

    
por 07.03.2014 / 17:29
2

wget parece retornar 0 quando for bem-sucedido e diferente de zero, portanto:

    wget blahblah
    if [[ $? -ne "0" ]]; then
        break;
    fi

... dentro do seu loop for .

    
por 07.03.2014 / 17:32

Tags