Find files in linux and exclude specific directories
You can use the -path
option to find and combine it with the -not
operator.
find . ! -path "*/test/*" -type f -name "*.js" ! -name "*-min-*" ! -name "*console*"
Please note two things
-path
must come as the first argument- the pattern matches the whole filename, so
-path test
will not match anything, ever
By the way, I'm not sure why you are using parentheses, it doesn't make a difference. It is only used for precedence, for constructs such as ! \( -name '*bla*' -name '*foo*' \)
(that is, do not find things that have both bla
and foo
).
A further refinement: no need to use the bash loop, you can simply do
find . ... -exec cat {} \; -exec echo \;
where ... are the other arguments to find
.
find / -path ./test -prune -o ...
Rename ./test
to fit the location of you test directory.