I'm trying to write a script that downloads and image off the net with wget.

The script should save the file named as the date it was downloaded preferably with a suffix.

Any ideas on how to accomplish this using wget?

6 Years
Discussion Span
Last Post by poobert

Sorry, more info:
Using BASH.

The image is on a website.
This script should run twice an hour as a cron job (open to other possibilities also.)

I initially was trying something like:


date=`date +%R%D`

wget image/on/web/named/img.gif

mv img.gif "$date-pic.gif"

BASH doesn't not like the mv command. It thinks the second argument is a directory (amongst many other errors)

What am I thinking about wrong here?

And I thought there'd be a good way to do this with only wget.


Your script should work if you remove the quote marks. However may I suggest something like this. For your crontab entry (assuming your shell script file is in /root/bin and called getpic.sh) use:

00,30 * * * *  /root/bin/getpic.sh <Site URL of file to get> <filename>

For your script use:

cd <path to where you want to store files> 
/usr/bin/wget $1/$2 
mv $2 $2.`date +%s`

Now you have a script you can use on multiple sites with multiple files. The date +%s inside the grave marks (to the left of the 1 below the tilde on most keyboards) will execute the date command and return a large integer and the actual file should show the date created.

%s     seconds since 1970-01-01 00:00:00 UTC

Then you don't have to worry about them being in the correct order in your directory listing or trying to figure out what year, month, day or time they were created. Hope that makes sense and works ok.

Edited by rch1231: removed extra asterick in cron entry


Thank you very much.
This performed exactly what I was trying to do.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.