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
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.