Nyx
Nyx

Reputation: 21

Wget Output in Recursive mode

I am using wget -r to download 3 .zip files from a specified webpage. Here is what I have so far:

 wget -r -nd -l1 -A.zip http://www.website.com/example

Right now, the zip files all begin with abc_*.zip where * seems to be a random. I want to have the first downloaded file to be called xyz_1.zip, the second to be xyz_2.zip, and the third to be xyz_3.zip.

Is this possible with wget?

Many thanks!

Upvotes: 0

Views: 1141

Answers (3)

forcefsck
forcefsck

Reputation: 3025

Try to get a listing first and then download each file separately.

let n=1
wget -nv -l1 -r --spider http://www.website.com/example 2>&1 | \
egrep -io 'http://.*\.zip'| \
while read url; do 
    wget -nd -nv -O $(echo $url|sed 's%^.*/\(.*\)_.*$%\1%')_$n.zip "$url"
    let n++
done

Upvotes: 1

dogbane
dogbane

Reputation: 274828

I don't think there is a way you can do it within a single wget command.

wget does have a -O option which you can use to tell it which file to output to, but it won't work in your case because multiple files will get concatenated together.

You will have to write a script which renames the files from abc_*.zip to xyz_*.zip after wget has completed.

Alternatively, invoke wget for one zip file at a time and use the -O option.

Upvotes: 0

mkj
mkj

Reputation: 2831

I don't think it's possible with wget alone. After downloading you could use some simple shell scripting to rename the files, like:

i=1; for f in abc_*.zip; do mv "$f" "xyz_$i.zip"; i=$(($i+1)); done

Upvotes: 1

Related Questions