São nomes de arquivos com o wget

2

Estou baixando uma lista de arquivos de URLs que contêm informações adicionais após os nomes de arquivos com wget. Isso resulta em nomes de arquivos como:

pythonbook.pdf@y=11& x = 123

Tudo o que eu realmente quero é a parte do pythonbook.pdf. Minha lista de arquivos é basicamente uma lista de URLs como:

link

Como posso não ter a parte desnecessária do nome do arquivo?

    
por Columbia_Bob 03.01.2018 / 15:14

1 resposta

1

Provavelmente, é mais fácil fazer uma iteração em toda a lista nesse caso (pois wget parece não ter suporte para a criação dinâmica de nomes de arquivos de saída):

while read url; do
    t=${url##*/}  # removes protocol and hostname
    pdf=${t%@*}   # removes part from @ onwards
    wget -O "$pdf" "$url"
done < LIST-OF-URLs

url é o URL lido da lista de URLs no arquivo, pdf é apenas a parte do nome do arquivo.

Caso os nomes não sejam exclusivos, você pode adicionar um número ao nome do arquivo, por exemplo, assim (assumindo que todos os arquivos são PDFs):

i=0
while read url; do
    t=${url##*/}      # removes protocol and hostname
    pdf=${t%.pdf@*}   # removes part from .pdf@ onwards
    wget -O "$pdf-$i.pdf" "$url"
    ((i++))
done < LIST-OF-URLs

ou (se os arquivos tiverem sufixos diferentes)

i=0
while read url; do
    t=${pdf##*/}    # removes protocol and hostname
    pdf=${t%@*}     # removes part from @ onwards
    wget -O "$i-$pdf" "$url"
    ((i++))
done < LIST-OF-URLs
    
por 03.01.2018 / 15:25

Tags