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
grep. See also M-x grep-find, in Grep Searching. 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 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;
find in directory, passing find-args to
find what condition to test. To use this command, you
need to know how to use
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.