#!/usr/bin/perl
# Recursively searchs down thru directories replacing patterns in file
+s.
# usage zsr 'search' 'replace' 'ext'(optional with no .)
# use '' for null string in $replace
# ex: zsr 'type1' 'series A'
use warnings;
use strict;
use File::Find;
my ($search,$replace,$ext) = @ARGV;
if (defined $ext) {$ext = ".$ext"} else {$ext = '.*'};
die "Usage : zsr 'search' 'replace' 'extension' (extension optional)\n
+" if ($search eq "");
find (\&wanted, ".");
sub wanted {
my $open = $_;
my $tempfile = 0;
if (!($open =~ /$ext$/i) or (-d||-B||-l)) {return}
print $open,"\n";
my $mode = (stat $open)[2];
#print $mode,"\n";
#printf "Permissions are %04o\n", $mode & 07777;
open (TEMP,">> $tempfile");
open (FH, "< $open") or die "Can't open $open: $!\n";
while (<FH>) {
$_ =~ s/$search/$replace/g;
print TEMP $_;
}
close FH;
close TEMP;
rename ($tempfile, $open) or die "Can't rename $open: $!\n";
chmod ($mode,$open) or die "Can't restore permissions to $open, possib
+ly wrong owner: $!\n";
}