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
pattern, and chooses all the files in
directory or its subdirectories whose individual names match
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,
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,
find-args; it runs
find-args to tell
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.
M-x locate provides a similar interface to the
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.