30.16 Dired and find
You can select a set of files for display in a Dired buffer more
flexibly by using the find utility to choose the files.
To search for files with names matching a wildcard pattern use
M-x find-name-dired. It reads arguments directory and
pattern, and chooses all the files in directory or its
subdirectories whose individual names match pattern.
The files thus chosen are displayed in a Dired buffer, in which the ordinary Dired commands are available.
If you want to test the contents of files, rather than their names,
use M-x find-grep-dired. This command reads two minibuffer
arguments, directory and regexp; it chooses all the files
in directory or its subdirectories that contain a match for
regexp. It works by running the programs find and
grep. See also M-x grep-find, in Searching with Grep under Emacs. Remember to write the regular expression for
grep, not for Emacs. (An alternative method of showing
files whose contents match a given regexp is the % g regexp command, see Dired Marks vs. Flags.)
The most general command in this series is M-x find-dired,
which lets you specify any condition that find can test. It
takes two minibuffer arguments, directory and find-args;
it runs find in directory, passing find-args to
tell find what condition to test. To use this command, you
need to know how to use find.
The format of listing produced by these commands is controlled by
the variable find-ls-option. This is a pair of options; the
first specifying how to call find to produce the file listing,
and the second telling Dired to parse the output.
The command M-x locate provides a similar interface to the
locate program. M-x locate-with-filter is similar, but
keeps only files whose names match a given regular expression.
These buffers don’t work entirely like ordinary Dired buffers: file
operations work, but do not always automatically update the buffer.
Reverting the buffer with g deletes all inserted subdirectories,
and erases all flags and marks.