When using stock find-file or counsel-find-file, is there a way to ignore certain files that I almost never want to open by hand? Examples include .elc files and backups.

  • Option completion-ignored-extensions doesn't work in that context? That's what ordinary file-name-completion respects. See (elisp)File Name Completion and (emacs)Completion Options. Of course, that's just extensions...
    – Drew
    Commented Jan 10, 2017 at 5:58
  • 2
    If you customize counsel-find-file-ignore-regexp, one of the options is to use completion-ignored-extensions. Commented Dec 13, 2017 at 0:12

2 Answers 2


Yes, use counsel-find-file-ignore-regexp.

For the simple example you provide use

    (setq counsel-find-file-ignore-regexp "\\.elc\\'")

The are more examples in the docstring for that variable.

  • Can we ignore certain folder paths as well?
    – alper
    Commented Nov 17, 2022 at 9:49
  • To ignore paths, check counsel-file-jump-args - this gives a lot of control over what is found in the first place.
    – ideasman42
    Commented May 18, 2023 at 4:07

While counsel-find-file-ignore-regexp can be used to exclude filenames, you can configure the find command to exclude paths with greater control as it has all the options available to find.

For example, this command excludes __pycache__ and directories beginning with a . including .git & .mypy_cache.

This example finds all *.el, *.org & Makefiles, excluding .* (.git for e.g.).

(setq counsel-file-jump-args 
     (list "."
           "-not" "-path"  "*/\\.*"
           "-not" "-path" "./*__pycache__/*"
           "(" "-name" "*.el" "-o" "-path" "*.org" "-o" "-path" "**/Makefile" ")"
           "-type" "f"

You can experiment in the command line to check which files will be found:

find . -not -path './*__pycache__/*' \
       -not -path '*/\\.*' \
     "(" -name "*.el" -o -path "*.org" -o -path "**/Makefile" ")" \
     -type "f" -print

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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