Developing software in the Real World

Setting title and caption with exiftool

I recently needed to change the title and caption of some photos, so I turned to exiftool as it’s the Swiss Army knife of image metadata.

It’s a lovely tool with many options, so I wrote a script to make it easy and while I was there, used read to prompt me for the info to set. This is the script:

~/bin/exif-set:


There’s a few interesting things that I’d like to point out. Firstly we use exiftool to find the current values of the three properties I care about. e.g. for the title:


The IPTC property names are a little opaque, which is partly why I wanted a script as I’m highly unlikely to remember that the title is the ObjectName property! The -s3 (very very short) flag returns just the text of the property with no label as that’s what I want to store in the variable. It’s a nice feature as I appreciate that I don’t have to pipe through sed or awk to extract just the part I want.

Prompting for a new value is done using read. I decided that I also wanted a blank entry (i.e. just pressing return) to indicate that I wanted to keep the current value. This is done using the handy :- parameter subsitution feature of bash:


We now have the values to set which are either new values typed in via read or the original values, so I can just write then back to the file:


With exiftool, it know you want to write the meta data by the = assignment of a value to the property name. By default it will create a copy of the original file first before modifying. I don’t need this copy, so -overwrite_original prevents a proliferation of files that I would then have to delete

That’s it

I now have a handy command line tool that allows me to change the title, caption and keywords of a photo easily. Job done!

Thoughts? Leave a reply

Your email address will not be published. Required fields are marked *