List the files containing a particular word in their text

Use the -l or --files-with-matches option which is documented as follows:

Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match. (-l is specified by POSIX.)

So, for you example you can use the following:

$ grep check * -lR

find . -type f -exec grep -l check {} +

You probably don't want to use the -R option which with modern versions of GNU grep follows symlinks when descending directories. Use the -r option instead there which since version 2.12 (April 2012) no longer follows symlinks.

If your grep is not the GNU one, or is older than version 2.12, or if you need your code to be portable to non-bleeding-edge-GNU systems, use the find command above.

Otherwise, you can do:

grep -rl check .

Don't use * (as that would omit hidden files in the current directory (and in the current directory only) and would cause problems for files whose name starts with a -), avoid passing options after arguments as that's not guaranteed to work depending on the environment and is not portable.