exifsort organizes pictures and movies into a date-based directory hierarchy derived from the embedded EXIF data in the media files themselves.
exifsort is written in Perl, because Perl is awesome. In order to run exifsort you will need to install these Perl modules first:
The target date-based directory hierarchy may or may not already exist. It's just fine if it does. The resulting layout is compatible with shotwell and f-spot. It looks like this: $TARGET/YYYY/MM/DD
So if you have a source directory like this...
$ ls -l source/ total 5108 Dec 2 2012 2009-12-28 22.02.36.jpg Dec 2 2012 4056906951_e3108261a4_b.jpg Dec 2 2012 ahs st louis trip paddle boat ride.jpg Dec 2 2012 bless-vanity-bedroom.jpg Dec 2 2012 dax-pan-on-head.jpg Dec 2 2012 leviathan-pic-lowres-2010-02-04 20.38.25.jpg Dec 17 2012 lightsaber hilts.jpg Dec 2 2012 peace-love-linux.png Dec 2 2012 wp_Helix_Nebula_1920x1200.jpg
...you can run exifsort like this...
$ exifsort --source ./source/ --dest ./target/
...and the files will be moved to the target directory, which will then look like this:
$ find target/ target/ target/2013 target/2013/02 target/2013/02/25 target/2013/02/25/r2d2-247.jpg target/2010 target/2010/02 target/2010/02/04 target/2010/02/04/leviathan-pic-lowres-2010-02-04 20.38.25.jpg target/2003 target/2003/12 target/2003/12/25 target/2003/12/25/Coiled Up.jpg target/2009 target/2009/12 target/2009/12/28 target/2009/12/28/2009-12-28 22.02.36.jpg target/2012 target/2012/12 target/2012/12/17 target/2012/12/17/lightsaber hilts.jpg target/2012/12/02 target/2012/12/02/peace-love-linux.png target/2012/12/02/wp_Helix_Nebula_1920x1200.jpg target/2012/12/02/ahs st louis trip paddle boat ride.jpg target/2012/12/02/bless-vanity-bedroom.jpg target/2012/12/02/dax-pan-on-head.jpg target/2012/12/02/4056906951_e3108261a4_b.jpg
exifsort is written for Linux specifically, and it isn't recommended that you try running it on Windows.
Always back up your media files before using any kind of photo management utility software such as this. By using this software you acknowledge that you have read, understood, and agree to be bound to the LICENSE under which it is distributed.