I like to organise my files by when they were taken. So I wrote a script to do it for me. You will need the jhead
tool installed. On Debian/Ubuntu/etc this is in the jhead
package.
#!/bin/bash rm renameJPEG.restore.sh for file in *.jpg *.jpeg *.JPG *.JPEG; do if [ ! -e "$file" ]; then continue fi echo "Inspecting $file" DateTime=`jhead "$file" | grep "Date/Time"` FoundCount=`jhead "$file" | grep "Date/Time" | wc -l` if [ $FoundCount -gt 1 ]; then echo "Found too many results for: $file" continue elif [ $FoundCount -eq 0 ]; then echo "No valid headers found." continue else BaseFile=`echo $DateTime | awk '{ print $3 }' | tr ':' '-'` for i in `seq 1000`; do if [ ! -e "$BaseFile - $i.jpg" ]; then echo "New file: $BaseFile - $i.jpg" mv "$file" "$BaseFile - $i.jpg" echo "mv '$BaseFile - $i.jpg' '$file'" >> renameJPEG.restore.sh break fi done fi done
This will rename all the files to the format YY-MM-DD - i.jpg
where i
is a uniquifier. Note that if you've some files with bad headers then you will get the wrong output.
If things go wrong you can do `bash renameJPEG.restore.sh" to put them back to how they were. Note that this might cause problems if there are files that already match the pattern.