#!/usr/bin/perl -w use strict; my $dir; foreach $dir (@ARGV) { $dir =~ s#/+$##; print "sorting $dir\n"; recurseAndSortDir($dir); } sub recurseAndSortDir { my ($curdir, $file, $dirhandle) = @_; if (not opendir($dirhandle, "$curdir") or not rename($curdir, "$curdir-OLDDIR") or not mkdir($curdir, (stat("$curdir-OLDDIR"))[2] & 07777) ) { print("$0: $curdir: $!\n"); return; } print("*** Sorting $curdir/\n"); foreach $file (sort readdir($dirhandle)) { next if ( $file eq "." or $file eq ".." ); rename("$curdir-OLDDIR/$file", "$curdir/$file") or die ("$0: mv(\"$curdir-OLDDIR/file\", \"$curdir/$file\"): $!\n"); if ( -d "$curdir/$file" ) { recurseAndSortDir("$curdir/$file"); } } if (not rmdir("$curdir-OLDDIR")) { print("$0: $curdir-OLDDIR: $!\n"); } closedir($dirhandle); }