Batch Renaming Photos with Command-Line Tools

Productivity Sauce

Nov 07, 2009 GMT

Dmitri Popov

Using date and time stamps as file names makes it significantly easier to manage your photos, and tools like Rapid Photo Downloader can automatically rename photos on the fly when downloading them from the camera. But what if you already have hundreds or even thousands of photos? In this case, you can rename them using a few simple command-line tools. The first one is the exiv2 package which contains tools for managing image metadata. On Ubuntu and Debian derivatives, you can install this package by running the apt-get install exiv2 command as root. The exiv2 tool features the mv option which renames files using the time stamp pulled from the EXIF metadata. The time stamp can be formatted using the -r switch followed by the date/time string in the strftime format. So the command that renames all .jpg files in a current directory using the YYYYMMDD-HHMMSS format is as follows:

exiv2 mv -r "%Y%m%d-%H%M%S" *.jpg

Another way to rename photos is to use the exiftool package. Install the libimage-exiftool-perl package, and use then the following command to rename the files in the current directory:

exiftool -d %Y%m%d-%H%M%S.%%e "-FileName<DateTimeOriginal" *.NEF

exiftool has other clever uses, too. For example, you can use it to sort photos by date as explained in this blog post.