@slhck forneceu uma resposta útil para esta pergunta semelhante.
Baixando vários arquivos com wget e manipulando parâmetros
Este código foi fornecido para ler URLs de um arquivo de textolista de arquivose execute um loop para baixar cada um.
#!/usr/bin/env bash
while read line
do
wget -c --load-cookies cookies.txt $line -O ${line##*/}
done < filelist
Como não estou familiarizado com scripts de shell, gostaria de saber se você poderia baixar vários arquivos xml:
- criando um arquivo de texto simples separado por vírgulalista de arquivos
- leia de:
lista de arquivos
arquivo renomeado.xml, url-01.php
renomeadoFileDifferent.xml, url-02.php
específicoFileRename.xml, "url-03"
novoNome do arquivo.xml, "url-04"
- leia cada linha
- divida a linha em newfile, remoteFile
E corra:
wget -O newfile remoteFile >/dev/null 2>&1
É possível escrever isso em um script de shell? você pode dar um exemplo?
Responder1
Para obter o texto antes da vírgula você usa ${line/,*}
.
(O que isso realmente faz é substituir ",*" outodo o texto a partir da vírgulacomstring vazia- deixando apenas a parte da string antes da vírgula)
Para obter o texto após a vírgula você usa ${line/*,}
.
Então o comando completo seria:
while read line
do
wget -O ${line/,*} ${line/*,} >/dev/null 2>&1
done < filelist
ou, em uma linha:
while read line; do echo wget -O ${line/,*} ${line/*,} >/dev/null 2>&1; done < filelist
No Windows (supondo que você tenha instalado o wget, dehttp://gnuwin32.sourceforge.net/packages/wget.htme defina seu caminho corretamente), seria:
for /f "delims=, tokens=1*" %a in (filelist) do wget -O %a %b