I organize images in a custom hierarchy of directories. Lately, I’ve been using Google Photos and its shared albums to share photos with family. When I download the photos from the album that others have contributed, I want to organize those photos based on who contributed them. Google photos doesn’t make that easy.
Fortunately, cameras embed their make and model into each picture that they take, and since nearly everyone uses a different model of smartphone or camera, it is easy to separate out the images.
Windows Explorer allows me to add the model of the camera for an image in the details view. Then I can sort on the model, and break out the photos into a separate subdirectory for each contributor.
On Linux, I haven’t found an easy way to do the same thing — i.e. Gnome’s file manager, Nautilus, is anemic in comparison, as are other Linux alternatives.
Recently, I found exiftool, and it solves the problem for me, at a command-line level (it works on Windows, MacOS, Linux, BSD, and others).
Test adding the model of camera to image (e.g. Canon EOS Rebel XIV)
exiftool -p -v1 '-testname<$model %f.%e' *.jpg
Do it for real:
exiftool -p -v1 '-filename<$model %f.%e' *.jpg
The final task is to remove the model name from the image. E.g.
rename 's/Canon EOS Rebel XIV //' *.jpg
Exiftool can do so much more, including organize images into subdirectories. This examples organizes images in the current directory into year-month-date directories:
exiftool -preserve -d "%Y-%m-%d" "-directory<filemodifydate" "-directory<createdate" "-directory<datetimeoriginal" .