When I was home over the weekend, I was working on helping my parents sort out the photos they took while they were in Europe. Doing this, I noticed that the date on the camera was out by a month. Being a stickler for correct metadata, I tried to figure out a way to fix this. This is the command line that I came up with. I’ve broken it into multiple lines here for clarity.
for f in *.jpg ; do
NEWDATE=`exiftool -CreateDate $f |
perl -pe 's/.*: 2006:([^:]+):/sprintf "2006:%02d:", ($1+1)/e'`;
echo $f: $NEWDATE;
exiftool -CreateDate="$NEWDATE" -DateTimeOriginal="$NEWDATE" $f;
done
This will modify the month field in the EXIF data of each file by increasing it by 1. It doesn’t handle wrap around or anything, I didn’t need to do that. The fanciest it gets is making sure there’s the correct number of zeros padding the number.
You don’t want to run this twice.
Tom Eastman | 24-Nov-06 at 9:07 am | Permalink
The tool ‘jhead’ (also used by Gallery) is your friend here.
You could have gone:
$ jhead -ta+744 *.jpg
Basically, that example adds 744 hours (31 days) to the date. Also have a look at the man page for the ‘-da’ option.
‘jhead’ is great.
Robin | 24-Nov-06 at 12:59 pm | Permalink
Ah, cunning. I didn’t know about jhead.