I have a file with joker character patterns:




From the current directory I would like to recursively get the list of files that do not match these patterns.

find . -type f \! \( -path '*/include/*' -o -path '*/src/*' \)


  • \! is negating the group
  • \( ... \) is how to do groups of conditions for find
  • -o ORs conditions
  • Everything else should be self-explanatory.

If you have a new enough version of find, you could enhance it with:

find . -type f -regextype posix-egrep -regex \! -path '.*/(include|src)/.*'
| improve this answer | |
  • Chill out man, we are probably in different timezones... Thanks for the answer. :) – Tamás Szelei May 5 '11 at 8:52
  • np, was just giving a friendly reminder =) – Brian Vandenberg May 5 '11 at 8:53
  • Dude. This response is excellent! – macetw Jan 19 '16 at 16:12

First approach, but not using a list of files, others feel free to improve on that:

find . -type f -print | grep -v '.\/src\/*'
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.