I use PERL for such excercises.
First I make a test to 'see' that it will do the right thing.
For example using 'ls' to find the target files:
ls tac*444.b* | perl -lne 'chomp; $o = $_; s/444\.b/344.b/; print "rename $o, $_" '
Or using the perl glob:
perl -le 'while () { $o = $_; s/444\.b/344.b/; print "rename $o, $_" }'
When satisfied, remove the print and make it real:
perl -le 'while () { $o = $_; s/444\.b/344.b/; rename $o, $_ }'
Babys teps:
-e '...' # command follows in quotes.
while () # loop over glob results, putting each output in automatic variable $_.
{ # block
$o = $_; # make copy of original file name
s/444\.b/344.b/; # substitute $_ data, with anchors as needed
rename $o, $_ # Real work, as function call
} # end-of-block for while.
hth,
Hein.