A quick and dirty rename command for UNIX: it looks simple, but is quite handy. Also, similar little utilities for deleting all the empty files (including empty gzipped files) in a directory, copying with rename, and so forth...
%cat rename.pl
#!/usr/bin/perl
=head1 SYNOPSIS
rename.pl '<pattern from>/<pattern to>' <filenames>
=head1 DESCRIPTION
Renames the files listed as <filenames> after performing the substitut
+ion using the standard perl regular expression pattern from and to.
=head1 EXAMPLES
rename.pl 'ready/done' file1-ready file2-ready_to_go
renames "file1-ready" to "file1-done" and
"file2-ready_to_go" to "file2-done_to_go"
=cut
use strict;
use warnings;
my $file;
my $old;
my $pattern;
my $command;
unless( @ARGV >= 2) {
print "Usage: rename \"patternfrom/to\" <filenames>\n";
exit(1);
} # end argument check
$pattern = shift(@ARGV);
foreach $file (@ARGV) {
$old=$file;
$pattern .= "/" unless( $pattern =~ m#.*?/.*?/$# );
$command = "\$file =~ s/$pattern";
eval $command;
if ( $@ ) {
print STDERR "$@";
} # end eval failed check
rename($old,$file);
} # end rename loop