@phils answered the question. This is just to say that the version of find-grep-dired
in library find-dired+.el
provides a bit more than the vanilla version:
- It has two optional args,
DEPTH-LIMITS
and EXCLUDED-PATHS
.
- The
interactive
spec uses read-from-minibuffer
, read-file-name
, dired-regexp-history
and find-diredp-default-fn
.
find-grep-dired
is an interactive compiled Lisp function in
find-dired+.el
.
(find-grep-dired DIR REGEXP &optional DEPTH-LIMITS EXCLUDED-PATHS)
Use Dired on the list of files in DIR
whose contents match REGEXP
.
The find’
command run (after changing into DIR
) is essentially this,
where LS-SWITCHES
is (car find-ls-option)
:
find . \( -type f -exec grep grep-program find-grep-options -e REGEXP {} \; \) LS-SWITCHES
Thus REGEXP
can also contain additional grep
options.
Optional arg DEPTH-LIMITS
is a list (MIN-DEPTH MAX-DEPTH)
of the
minimum and maximum depths. If nil
, search directory tree under DIR
.
Optional arg EXCLUDED-PATHS
is a list of strings that match paths to
exclude from the search. If nil
, search all directories.
When both optional args are non-nil
, the find
command run is this:
find . -mindepth MIN-DEPTH -maxdepth MAX-DEPTH \( -path EXCLUDE1 -o -path EXCLUDE2 ... \)
-prune -o -exec grep-program find-grep-options -e REGEXP {} \; LS-SWITCHES
where EXCLUDE1
, EXCLUDE2
... are the EXCLUDED-PATHS
, but shell-quoted.