Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

i have a text file that contains 10,000 url's with a unique number i want to save the file as. Each line has a 10 character code, then the URL of the image to retrieve. How can I make the input file use the first 10 characters as the wget filename?

this is an example of the input file: 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 would get the file but not with the preceding unique number.

I want t29123q8m19.jpg (the first line) to be saved as x100083590.jpg

If there is a better way to write out the input file, say with the URL first, then I can do that too, but I will never know the length of the first field. Right now the first 10 characters will always be what I want to save the wget image as.

Edit This is being done in a windows environment.

share|improve this question

3 Answers 3

up vote 2 down vote accepted

Use the following batch file:

@echo off
setlocal enabledelayedexpansion
for /f %%l in (Input.txt) do (
    set line=%%l
    wget -O !line:~0,10!.jpg !line:~10!
)
share|improve this answer
    
This worked. Thank you Karan. –  Matt Nov 20 '12 at 23:55

In 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

Under windows, we could do:

 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
 )
share|improve this answer
    
Thank you for the Prompt reply Paul. How would one do it in Windows? –  Matt Nov 20 '12 at 22:37
    
@Matt Added windows, let me know if you find any bugs –  Paul Nov 20 '12 at 23:03
    
Here is the error i get upon running this in a batch file: --2012-11-20 15:19:44-- http://~10/ Resolving ~10... failed: No data record of requested type. wget: unable to resolve host address `~10' –  Matt Nov 20 '12 at 23:24
    
@Matt Ok try this. Stupid windows :) –  Paul Nov 20 '12 at 23:56
    
Same error. Karan's solution above is almost the same, and is working. I still thank you for your assistance and contribution. –  Matt Nov 21 '12 at 0:08

Using and the shell (cygwin or git-bash):

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

same, but multi lines version:

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.