9.5.1 How do I do a recursive grep?

The Emacs commands rgrep, grep-find and find-grep-dired are all different interfaces for grepping recursively into subdirectories. By default, they use the command find to determine which files to work on, and either run grep directly from find, or use xargs to batch up files and reduce the number of invocations of grep.

Windows also comes with a find command, but it is not in any way compatible with the POSIX find that Emacs tries to use. Emacs expects a find compatible with GNU findutils. See Other useful ports. After you have installed it, you will need to make sure that Emacs finds this version, not the standard Windows find command. You can do this by either renaming the Windows command, changing your PATH to ensure that the directory containing the findutils bin directory comes before the Windows system directory, or set the variable find-program to the full path to the findutils find command.

An alternative if you have a recent version of grep is to customize grep-find-command to use ‘grep -r’ instead of both find and grep. Another alternative if you don’t need the full capabilities of grep is to use ‘findstr /n /r’; add the ‘/s’ option if you want a recursive search.