how to use the unix "find" command to find all the cpp and h files?
find -name "*.h" -or -name "*.cpp"
(edited to protect the asterisks which were interpreted as formatting)
find . -name \*.h -print -o -name \*.cpp -print
or
find . \( -name \*.h -o -name \*.cpp \) -print
A short, clear way to do it with find
is:
find . -regex '.*\.\(cpp\|h\)'
From the man page for -regex
: "This is a match on the whole path, not a search." Hence the need to prefix with .*
to match the beginning of the path ./dir1/dir2/...
before the filename.
Paul Tomblin Has Already provided a terrific answer, but I thought I saw a pattern in what you were doing.
Chances are you'll be using find to generate a file list to process with grep one day, and for such task there exists a much more user friendly tool, Ack
Works on any system that supports perl, and searching through all C++ related files in a directory recursively for a given string is as simple as
ack "int\s+foo" --cpp
"--cpp"
by default matches .cpp .cc .cxx .m .hpp .hh .h .hxx
files
(It also skips repository dirs by default so wont match on files that happen to look like files in them.)