13

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

6 Answers 6

7

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

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.

3

Nowadays, this can be done using the function directory-files-recursively.

2

In emacs 23, try M-x find-dired

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, 2012 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, 2012 at 11:30
  • You're right; it works for me, too. I never noticed that!
    – offby1
    Oct 6, 2012 at 17:44
1

If you're using consult, there is the very convenient consult-find: enter image description here

It updates the minibuffer as you type, and then you can just select the item you want and press ENTER to open the file in a buffer.enter image description here

I'm also using vertico for the vertical minibuffer display and marginalia for the in-minibuffer function annotations seen in the first screenshot.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .