Excluding nested directories with grep
Clash Royale CLAN TAG#URR8PPP
up vote
4
down vote
favorite
I would like to exclude a nested directory from my grep searches, such as /path/to/file
. For example:
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="to" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="file" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path/to/file" "hello" .
./path/to/file/f.txt:hello
In the last line, the file is not excluded, apparently because I have multiple nested directories provided with the exclude-dir
argument. How can I get the last example to exclude searches in the path/to/file
directory?
grep
add a comment |
up vote
4
down vote
favorite
I would like to exclude a nested directory from my grep searches, such as /path/to/file
. For example:
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="to" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="file" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path/to/file" "hello" .
./path/to/file/f.txt:hello
In the last line, the file is not excluded, apparently because I have multiple nested directories provided with the exclude-dir
argument. How can I get the last example to exclude searches in the path/to/file
directory?
grep
add a comment |
up vote
4
down vote
favorite
up vote
4
down vote
favorite
I would like to exclude a nested directory from my grep searches, such as /path/to/file
. For example:
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="to" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="file" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path/to/file" "hello" .
./path/to/file/f.txt:hello
In the last line, the file is not excluded, apparently because I have multiple nested directories provided with the exclude-dir
argument. How can I get the last example to exclude searches in the path/to/file
directory?
grep
I would like to exclude a nested directory from my grep searches, such as /path/to/file
. For example:
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="to" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="file" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path/to/file" "hello" .
./path/to/file/f.txt:hello
In the last line, the file is not excluded, apparently because I have multiple nested directories provided with the exclude-dir
argument. How can I get the last example to exclude searches in the path/to/file
directory?
grep
grep
asked Aug 31 '15 at 0:59
Jake
1212
1212
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
4
down vote
It seems that --exclude-dir
is only compared against the basename of the path, ie the current subdir. So path/to/file will never match dir "file", but only --exclude-dir=file
will, or a glob version eg --exclude-dir=*ile
.
The usual alternative is to use find
, eg if it handles option -path
:
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' +
The pattern after -path
has to match the path including your starting dir, but you
can use globs to simplify, eg '*path*file*'
, where * matches / as well.
Otherwise, you can resort to find | sed | xargs egrep
.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
4
down vote
It seems that --exclude-dir
is only compared against the basename of the path, ie the current subdir. So path/to/file will never match dir "file", but only --exclude-dir=file
will, or a glob version eg --exclude-dir=*ile
.
The usual alternative is to use find
, eg if it handles option -path
:
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' +
The pattern after -path
has to match the path including your starting dir, but you
can use globs to simplify, eg '*path*file*'
, where * matches / as well.
Otherwise, you can resort to find | sed | xargs egrep
.
add a comment |
up vote
4
down vote
It seems that --exclude-dir
is only compared against the basename of the path, ie the current subdir. So path/to/file will never match dir "file", but only --exclude-dir=file
will, or a glob version eg --exclude-dir=*ile
.
The usual alternative is to use find
, eg if it handles option -path
:
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' +
The pattern after -path
has to match the path including your starting dir, but you
can use globs to simplify, eg '*path*file*'
, where * matches / as well.
Otherwise, you can resort to find | sed | xargs egrep
.
add a comment |
up vote
4
down vote
up vote
4
down vote
It seems that --exclude-dir
is only compared against the basename of the path, ie the current subdir. So path/to/file will never match dir "file", but only --exclude-dir=file
will, or a glob version eg --exclude-dir=*ile
.
The usual alternative is to use find
, eg if it handles option -path
:
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' +
The pattern after -path
has to match the path including your starting dir, but you
can use globs to simplify, eg '*path*file*'
, where * matches / as well.
Otherwise, you can resort to find | sed | xargs egrep
.
It seems that --exclude-dir
is only compared against the basename of the path, ie the current subdir. So path/to/file will never match dir "file", but only --exclude-dir=file
will, or a glob version eg --exclude-dir=*ile
.
The usual alternative is to use find
, eg if it handles option -path
:
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' +
The pattern after -path
has to match the path including your starting dir, but you
can use globs to simplify, eg '*path*file*'
, where * matches / as well.
Otherwise, you can resort to find | sed | xargs egrep
.
answered Aug 31 '15 at 5:31
meuh
31k11754
31k11754
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f226493%2fexcluding-nested-directories-with-grep%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown