Taking part of one file name and putting it into a another file name

Not sure how to do the following, but any help would be appreciated.
Has to be done using C shell (sorry about that).

I have about 300 files that I need this done for, but I am only going to give one example. I will just need to know how to execute your solution through some type of loop to get all three files.

I have a file named data.ccyymmdd.dat.gz.

I need to copy that file to a new name, but take the ccyymmdd out of the original filename and put it into the name of the new filename.

Final output would be newdata.ccyymmdd.dat.gz.

Example:

I have

data.20100101.dat.gz
data.20100301.dat.gz
data.20100701.dat.gz
data.20101001.dat.gz

and need to run something that will ls or list all the files, loop through them, copy the file over BUT name it:

newdata.20100101.dat.gz
newdata.20100301.dat.gz
newdata.20100701.dat.gz
newdata.20101001.dat.gz
 

Any help would be greatly appreciated.
Thanks.

$ ls sample*.*
sample.txt  sample1.txt  sample10.txt  sample2.txt  sample3.txt  sample30.txt  sample31.txt  sample32.txt  sample4.txt


$ ls sample*.* | while read myfile; do cp $myfile "my"$myfile ; done


$ ls my*.*
mysample.txt   mysample10.txt  mysample3.txt   mysample31.txt  mysample4.txt
mysample1.txt  mysample2.txt   mysample30.txt  mysample32.txt

This solution is great, but I think I might not have explained it correctly. i don't need the entire file name copied over, but just a portion. In my original example, there is a node in the file name that is a date, I just need the take that date and plug it into the new file name.

I will use part of your example, but modify it slightly.

ls sample*.*
sample.20100101.txt  sample1.20110101.txt 
sample10 20120101.txt  sample2.20130101.txt  

My output needs to be:

example.20100101.txt
example.20110101.txt
example.20120101.txt
example.20130101.txt

I am not sure how to get to/extract/cut out that date and how to put it in the new file name.

Thanks.