Como usar o wget com um arquivo de entrada e nomes de arquivos

1

Eu tenho um arquivo de texto que contém 10.000 URLs com um número único que eu quero salvar o arquivo como. Cada linha tem um código de 10 caracteres e, em seguida, o URL da imagem a ser recuperada. Como posso fazer o arquivo de entrada usar os primeiros 10 caracteres como o nome do arquivo wget?

este é um exemplo do arquivo de entrada: input.txt

x100083590http://image.allmusic.com/13/adg/cov200/drt200/t291/t29123q8m19.jpg
b200149548http://ecx.images-amazon.com/images/I/41DoH%2BAWKEL.jpg
z100151855http://image.allmusic.com/13/amg/cov200/dri400/i450/i45035hxdrb.jpg
p400171646http://ecx.images-amazon.com/images/I/61cH4n34IhL.jpg

wget -i input.txt obteria o arquivo, mas não o número exclusivo anterior.

Eu quero que t29123q8m19.jpg (a primeira linha) seja salvo como x100083590.jpg

Se houver uma maneira melhor de escrever o arquivo de entrada, digamos com o URL primeiro, então eu também posso fazer isso, mas nunca saberei o comprimento do primeiro campo. Neste momento, os primeiros 10 caracteres sempre serão o que eu quero salvar a imagem do wget como.

Editar Isso está sendo feito em um ambiente Windows.

    
por Matt 20.11.2012 / 23:16

3 respostas

2

Use o seguinte arquivo em lotes:

@echo off
setlocal enabledelayedexpansion
for /f %%l in (Input.txt) do (
    set line=%%l
    wget -O !line:~0,10!.jpg !line:~10!
)
    
por 21.11.2012 / 00:44
5

no linux.

 while read p; do
   newname=${p:0:10} # first 10 chars
   url=${p:10} # remaining chars after the 10th
   wget $url -O $newname.jpg  #get url and output to new filename
 done < input.txt

No Windows, poderíamos fazer:

 SETLOCAL ENABLEDELAYEDEXPANSION
 for /f %%p in (input.txt) do (
    SET p1=$$p
    SET newname=!p1:~0,10!
    SET url=!p1:~10!
    wget %url% -O %newname%.jpg
 )
    
por 20.11.2012 / 23:32
0

Usando awk e o shell ( cygwin ou git-bash ):

file=/PATH/TO/INPUT_FILE.txt
awk '{print "wget 7" substr($0, 11) "7 -o " substr($0, 0, 10) ".jpg"}' "$file | sh

mesma versão, mas com várias linhas:

file=/PATH/TO/INPUT_FILE.txt
awk '
    {
        print "wget 7" substr($0, 11) "7 -o " substr($0, 0, 10) ".jpg"
    }
' "$file | sh
    
por 20.11.2012 / 23:48

Tags