Команда переименования, встроенная в большинство Linux, например, сделает это легко.
Лично я тоже предпочитаю регулярные выражения, поэтому я очень и очень долго носил этот скриптчитай: с конца 80-х или начала 90-х):
#!/usr/bin/perl
($op = shift) || die "Usage: $0 expr [files]]\n";
if(!@ARGV)
{
@ARGV = <STDIN>;
chop(@ARGV);
}
for (@ARGV)
{
$was = $_;
eval $op;
die $@ if $@;
if ($was ne $_)
{
print "rename($was,$_)\n";
rename($was,$_);
}
}
Что, при установке, позволяет делать такие вещи:
script-name 's/.*-doc(.*).txt/doc$1.txt/' *.txt