On Mon, 4 Jan 2021 09:55:48 -0800 Jim Meyering <j...@meyering.net> wrote:
> tags 45432 moreinfo > stop > > On Fri, Dec 25, 2020 at 8:57 AM Fred .Flintstone <eldman...@gmail.com> wrote: > > It seems --exclude does nothing when --include is used. It would be useful > > to be able to use both together, in order to do things such as recusively > > grepping files of a certain file extension while excluding certain > > directories. > > > > Example: > > $ grep --recursive --include="*.cs" --exclude="*/tests/*" > > Can you provide a complete example showing a malfunction? > You've probably already read this from "info grep", but see also > the description of --exclude there: > > ‘--include=GLOB’ > Search only files whose name matches GLOB, using wildcard matching > as described under ‘--exclude’. If contradictory ‘--include’ and > ‘--exclude’ options are given, the last matching one wins. If no > ‘--include’ or ‘--exclude’ options match, a file is included unless > the first such option is ‘--include’. I understand as he requests "AND" condition. $ mkdir a b $ touch a/x.a a/x.b b/x.a b/x.b $ for file in */*; do echo x >$file; done Current result: $ grep --recursive '--include=*.a' '--exclude=b/*' x . ./b/x.a:x ./a/x.a:x Request from him: $ grep --recursive '--include=*.a' '--exclude=b/*' x . ./a/x.a:x It means "*.a expept b/*"