9

In Emacs how can I search a directory and all subdirectories for a filename?

4

In dired, you can list all the subdirectories of the visited directory by moving to the first line and pressing C-u l and adding the R switch. You can then search the file name in the buffer, or mark files based on a regexp with % m.

On Linux, or Windows with Cygwin utilities, or other unix-like system with GNU find, a quick-and-dirty hack is M-x grep-find, and edit the command line to contain just the find part with a suitable format:

find -type f -name '*.foo' -printf '%p:0:\n'

On any system that has unix tools available, you can run the find command with M-! find. In the output buffer, you can use M-x ffap to visit the chosen file. You can also set up dired-x so that C-u C-x C-f can be used instead of M-x ffap.

2

You can use M-x find-name-dired. It will ask for a directory and a wildcard pattern, so you can enter something like *thing* and have all files with "thing" in the name listed in a dired buffer.

More here: http://emacswiki.org/emacs/RecursiveGrep (along with a snippet that lets you skip writing out the stars too).

1

You can open: */foo.bar for finding any files named foo.bar in a direct subdirectory of the current one, or **/foo.barfor finding any files named foo.bar recursively in subdirectories of the current one.

3
  • This doesn't work for me -- I suspect it requires some library that isn't loaded by default.
    – offby1
    Oct 5 '12 at 20:27
  • It work here with stock Emacs (with emacs -q --no-site-file), I do know that this was not available with older Emacs, and it conflict with ido.
    – Rémi
    Oct 6 '12 at 11:30
  • You're right; it works for me, too. I never noticed that!
    – offby1
    Oct 6 '12 at 17:44
1

In emacs 23, try M-x find-dired

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.