3

I have a file with joker character patterns:

./include/*

./src/*

etc.

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

2 Answers 2

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

Breakdown:

  • \! 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)/.*'
3
  • Chill out man, we are probably in different timezones... Thanks for the answer. :) Commented May 5, 2011 at 8:52
  • np, was just giving a friendly reminder =) Commented May 5, 2011 at 8:53
  • Dude. This response is excellent!
    – macetw
    Commented Jan 19, 2016 at 16:12
0

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

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .