Replacing string in all instances (both filenames and file contents) in a directory

Hi,
I have a set of files stored in a single directory that I use to set parameters for a physics code, and I would like to streamline the process of updating them all when I change a parameter. For instance, if the files are called A2000p300ini, A2000p300sub, A2000p300run, and the text in each file includes several instances of the parameter '2000', I would like to be able to use a single script to create a new set of files A1500p300ini, A1500p300sub, A1500p300run in which every instance of '2000' has been replaced by '1500'.

I can see that I could use sed to change the contents and names of the files one at a time,
sed -e 's/2000/1500/g' A2000p300run > A1500p300run
but I was hoping to get it all done in one foul swoop to everything in the directory, and my scripting skills are on the basic side. Suggestions welcomed.
Chris

Hmmm, answered my own question eventually, this line does it (for replacing 2000 with 1500):

find . -name "*2000*" -print|awk '{f=$0;gsub("2000","1500");print "sed -e 's/2000/1500/g' "f" > "$0}'|sh

Remaining question is can I do something like:
new=1500
old=2000
find . -name "*$old*" -print|awk '{f=$0;gsub($old,$new);print "sed -e 's/$old/$new/g' "f" > "$0}'|sh

I seem to have a problem with the gsub part of the awk command when I do this.

To use the variables with awk:

new=1500
old=2000

awk -v n=$new o=$old '{awk '{f=$0;gsub(o,n);......}'

Regards

In case anyone was wondering, the final all singing all dancing command (having set the old string to $old and the new string to $new) is:

find . -name "*$old*" -print|awk -v n=$new -v o=$old '{f=$0;gsub(o,n);print "sed -e 's/$old/$new/g' "f" > "$0}'|sh