in reply to How to do a recursive rename ?

Here is a novice's way:
#!/usr/bin/perl -w use strict; use File::Find; my $dir = '.'; # or wherever find(\&myrename, $dir); sub myrename { my $file1 = $_; my $file2 = $_; if ($file2 =~ s/\.abc$/.edf/) { print "renamed $file1, $file2\n" if rename $file1, $file2; } }
rudif

Replies are listed 'Best First'.
RE: Re: How to do a recursive rename ?
by runrig (Abbot) on Sep 12, 2000 at 04:31 UTC
    I hope there are no directories named "*.abc". Here's another way:
    #!/usr/bin/perl -w use strict; use File::Find; my $dir = '.'; # or wherever find(\&myrename, $dir); sub myrename { return unless -f and /(.*?)\.abc$/s; my $new_name = $1.".edf"; if (rename $_, $new_name) { print "renamed $File::Find::name to $new_name\n"; } else { warn "Couldn't rename $File::Find::name to $new_name: $!"; } }