How do I find files that do not contain a given string pattern?
If your grep has the -L
(or --files-without-match
) option:
$ grep -L "foo" *
Take a look at ack
. It does the .svn
exclusion for you automatically, gives you Perl regular expressions, and is a simple download of a single Perl program.
The equivalent of what you're looking for should be, in ack
:
ack -L foo
You can do it with grep alone (without find).
grep -riL "foo" .
This is the explanation of the parameters used on grep
-L, --files-without-match
each file processed.
-R, -r, --recursive
Recursively search subdirectories listed.
-i, --ignore-case
Perform case insensitive matching.
If you use l
(lowercased) you will get the opposite (files with matches)
-l, --files-with-matches
Only the names of files containing selected lines are written