What concise command can I use to find all files that do NOT contain a text string?
I tried this (using -v to invert grep's parameters) with no luck:
find . -exec grep -v -l shared.php {} \;
Someone said this would work:
find . ! -exec grep -l shared.php {} \;
But it does not seem to work for me.
This page has this example:
find ./logs -size +1c > t._tmp
while read filename
do
grep -q "Process Complete" $filename
if [ $? -ne 0 ] ; then
echo $filename
fi
done < t._tmp
rm -f t_tmp
But that's cumbersome and not at all concise.
ps: I know that grep -L *
will do this, but how can I use the find command in combination with grep to excluded files is what I really want to know.
pss: Also I'm not sure how to have grep include subdirectories with the grep -L *
syntax, but I still want to know how to use it with find
🙂
Best Answer
OR
Here we are calculating number of matching lines(using
-c
) in a file if the count is 0 then its the required file, so we cut the first column i.e. filename from the output.