This script takes one parameter, the directory to where your pictures (or files) resides. It then creates a directory with the name of the creation date and move the picture/file into it. The directory name is in this format: YYYY-MM-DD
#!/bin/bash for i in $(ls $1); do CREATEDATE=$1/`date -r $1/$i +%F` SRC=$1/$i if [ -d $CREATEDATE ]; then mv $SRC $CREATEDATE else mkdir $CREATEDATE mv $SRC $CREATEDATE fi done
This can be used to organize pictures into a folder structure easily used by a gallery (that's at least what I'm using it for).
Hope you like it.
Update: If you want to use underscore as separators in the directory names use this edition instead:
#!/bin/bash for i in $(ls $1); do CREATEDATE=$1/`date -r $1/$i +%Y_%m_%d` SRC=$1/$i if [ -d $CREATEDATE ]; then mv $SRC $CREATEDATE else mkdir $CREATEDATE mv $SRC $CREATEDATE fi done
By changing the date command (see man pages) you can make a naming layout that suite you best. Just change the parameters after the “+” sign.
Update #2:
If you have a bunch of jpg files and you've lost their creation date you can extract it from an exif tag (if it is set by the camera, wich they usually are). This script will do just that. Note however that it is ONLY jpg files:
Remember to install exiftool (sudo apt-get install libimage-exiftool-perl)
#!/bin/bash for i in $(ls $1); do CREATEDATE=$1/`exiftool -d %Y_%m_%d -CreateDate $1/$i |cut -d: -f2| sed -e 's/^[ \t]*//'` SRC=$1/$i if [ -d $CREATEDATE ]; then mv $SRC $CREATEDATE else mkdir $CREATEDATE mv $SRC $CREATEDATE fi done