#! /usr/bin/perl -w eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; #$running_under_some_shell use File::Find (); # for the convenience of &wanted calls, including -eval statements: use vars qw/*name *dir *prune/; *name = *File::Find::name; *dir = *File::Find::dir; *prune = *File::Find::prune; my $target = "foo" ; my $replacement = "bar" ; my $startdir = "./" ; # overwrite =0 only displays the operations it WOULD do # set overwrite=1 to actually execute the changes my $overwrite = 0 ; print "Starting in directory \"$startdir\" and overwriting is \"$overwrite\"\n" ; # Traverse desired filesystems File::Find::find({wanted => \&wanted}, $startdir); exit; sub wanted { my $filename = $_ ; # This was for debugging purposes, so I could watch it iterate through the files. # print "Filename is: $filename\n" ; if ($filename =~ m/$target/) { $newfilename = $filename ; $newfilename =~ s/$target/$replacement/ ; print "Renaming: $filename\n" ; print " $newfilename\n" ; if ($overwrite) { rename($filename, $newfilename) ; } } }