#!/usr/bin/perl -w use strict; my $PREVIEW = 1; # set to 0 to actually do it sub mkdir_if_needed { my ($dir) = @_; return if -e $dir; print "mkdir $dir\n"; return if $PREVIEW; mkdir $dir; } sub rename_if_needed { my ($src, $dst) = @_; return if -e $dst; print "$src -> $dst\n"; return if $PREVIEW; rename $src, $dst; } open(FIND, "find '$ENV{HOME}/Documents/iChats' -name '*.chat' -o -name '*.ichat'|"); while() { chomp; my ($base) = m|([^/]*)$|; my ($date) = /on (\d{4}-\d\d-\d\d) at/; next unless $base and $date; my $dstdir = "$ENV{HOME}/Documents/iChats/$date"; my $dst = "$dstdir/$base"; mkdir_if_needed($dstdir); rename_if_needed($_, $dst); }