Negative matching using grep (match lines that do not contain foo)

jerrygarciuh picture jerrygarciuh · Aug 23, 2010 · Viewed 906.9k times · Source

I have been trying to work out the syntax for this command:

grep ! error_log | find /home/foo/public_html/ -mmin -60

OR:

grep '[^error_log]' | find /home/baumerf/public_html/ -mmin -60

I need to see all files that have been modified except for those named error_log.

I've read about it here, but only found one not-regex pattern.

Answer

Motti picture Motti · Aug 23, 2010

grep -v is your friend:

grep --help | grep invert  

-v, --invert-match select non-matching lines

Also check out the related -L (the complement of -l).

-L, --files-without-match only print FILE names containing no match