find -prune

$ find . -iname '*.cpp' -o -iname '*.c' -o -iname '*.h'
./Projects/fooWin32/fooWin32/fooWin32.cpp
./Projects/fooWin32/fooWin32/fooWin32.h
./Projects/fooWin32/fooWin32/Resource.h
./Projects/fooWin32/fooWin32/stdafx.cpp
./Projects/fooWin32/fooWin32/stdafx.h
./Projects/fooWin32/fooWin32/targetver.h
./Projects/fooWin32_/fooWin32_/main.c
./Projects/tmp/tmp/main.cpp
./Projects/tmp0/tmp/Resource.h
./Projects/tmp0/tmp/stdafx.cpp
./Projects/tmp0/tmp/stdafx.h
./Projects/tmp0/tmp/targetver.h
./Projects/tmp0/tmp/tmp.cpp
./Projects/tmp0/tmp/tmp.h
./Projects/vector_capacity/vector_capacity/main.cpp
$ find . -iname '*.cpp' -o -iname '*.c' -o -iname '*.h' -o -ipath '*tmp*' -prune -type f
./Projects/fooWin32/fooWin32/fooWin32.cpp
./Projects/fooWin32/fooWin32/fooWin32.h
./Projects/fooWin32/fooWin32/Resource.h
./Projects/fooWin32/fooWin32/stdafx.cpp
./Projects/fooWin32/fooWin32/stdafx.h
./Projects/fooWin32/fooWin32/targetver.h
./Projects/fooWin32_/fooWin32_/main.c
./Projects/vector_capacity/vector_capacity/main.cpp

ただし

$ find . -iname '*.cpp' -o -iname '*.c' -o -iname '*.h' -o -ipath '*tmp*' -prune -type f -print

何も表示されない

$ find . \( -iname '*.cpp' -o -iname '*.c' -o -iname '*.h' -o -ipath '*tmp*' -p
rune -type f \) -print
./Projects/fooWin32/fooWin32/fooWin32.cpp
./Projects/fooWin32/fooWin32/fooWin32.h
./Projects/fooWin32/fooWin32/Resource.h
./Projects/fooWin32/fooWin32/stdafx.cpp
./Projects/fooWin32/fooWin32/stdafx.h
./Projects/fooWin32/fooWin32/targetver.h
./Projects/fooWin32_/fooWin32_/main.c
./Projects/vector_capacity/vector_capacity/main.cpp