Replace multiple file by passing parameter value

Hello All,
I want to change date part in file name to yesterday date in the file name.

example file name

file-12122017-06-30-41.dat

want

file-12112017-06-30-41.dat

I am doing like below. Below it is not changing the filename. Actually it is not parsing the $today and $yesterday value in replacing part.

yesterday=`date +%m%d%Y -d "1 day ago"`
today=`date +%m%d%Y`
find . -name "*$today-*" -exec bash -c 'mv $0 ${0/"$today"/"$yesterday"}' {} \;

Kindly help on this.

Single quotes prevent variables from being expanded - try double quotes, and leave the inner ones out. Be careful - in that context, $0 will not yield the desired file name but the name of the running shell. Escape the $ , then.

Why, btw, that find overkill? How about a simple

for FN in *$today-*; do echo mv $FN ${FN/$today/$yesterday}; done

remove echo when happy with the result presented.