[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#45432: Use both --include and --exclude at the same time
From: |
Norihiro Tanaka |
Subject: |
bug#45432: Use both --include and --exclude at the same time |
Date: |
Tue, 05 Jan 2021 22:27:30 +0900 |
On Mon, 4 Jan 2021 09:55:48 -0800
Jim Meyering <jim@meyering.net> wrote:
> tags 45432 moreinfo
> stop
>
> On Fri, Dec 25, 2020 at 8:57 AM Fred .Flintstone <eldmannen@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/*"