Rename small part of multiple files in middle of name using Bash?
rename 's/_13/_15/' cc*
Should do what you want. The regular expression s/_13/_15/
replaces _13
by _15
in all files starting 'cc'.
$ ls
cc211_AMBER_13062012.II cc211_GROMOS_13062012.II
cc211_CHARM_13062012.II cc211_OPLS_13062012.II
$ rename 's/_13/_15/' cc*
$ ls
cc211_AMBER_15062012.II cc211_GROMOS_15062012.II
cc211_CHARM_15062012.II cc211_OPLS_15062012.II
This will only work with the newer perl version of rename
. To check which version you have do man rename
. If the top of the page says
Perl Programmers Reference Guide
you have the perl version. If it says:
Linux Programmer's Manual
you have the standard (older) version.
For the older version, the command should be:
rename _13 _15 cc*
How about this:
for i in *.II; do mv $i $(echo $i | sed 's/_13/_15/g'); done
This will replace _13
with _15
in all files with extension .II
More information on sed here.
A pure bash
solution:
for i in cc*; do
mv "$i" "${i/_13/_15}"
done