Do you ever try rm -r *.bak and wonder why it is not working like it is supposed to? From the man page (man rm), the definition for -r is :
r, -R, --recursive
remove directories and their contents recursivelySo basically -r is for directories and their contents recursively. In other words it only deletes recursively, not search recursively for things to be deleted.
A quick fix is simple :
find -type f -name '*.bak' -print0 | xargs -0 rm