On 21/10/2018 22.48, David Wright wrote:
On Sun 21 Oct 2018 at 05:25:05 (-0500), Richard Owlett wrote:On 10/20/2018 08:16 PM, John Crawley wrote:On 20/10/2018 19.28, Richard Owlett wrote:...I would have expected to use an explicit pipe command between 'find' and 'grep'.In fact, depending on the exact conditions of your search, you might not need to use find at all. 'grep -r' will do a recursive search, starting at whatever directory you give it, looking inside every file for some content. Like: grep -r 'keyword_or_regex' dirname Of course, 'man grep' for various options...I wish a list of files with a specific extension in a directory which contain keywordA but not keywordB. Recursing down the directory tree was the primary objection to the MATE search tool.At last, a direct question! $ grep -L keywordB $(grep -l keywordA a-directory/*extension) Mix with quotes according to taste and needs.
I'm pretty sure David's code above will do exactly what the OP asked for.This is about searching through a list of files, so I think the subsequent discussion of stdin might have been a bit confusing, since it's only one file.
The -L and -l options are about what grep outputs: the name of a file, not the matching string itself.
Man grep's "The scanning will stop on the first match" refers to scanning inside a certain file; so once a decision has been reached as to whether it satifies the condition or not, then grep will move on to testing the next file.
-- John