It can be done without find
as well by using grep's "--include"
option.
grep man page says:
--include=GLOB
Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).
So to do a recursive search for a string in a file matching a specific pattern, it will look something like this:
grep -r --include=<pattern> <string> <directory>
For example, to recursively search for string "mytarget" in all Makefiles:
grep -r --include="Makefile" "mytarget" ./
Or to search in all files starting with "Make" in filename:
grep -r --include="Make*" "mytarget" ./