我知道要找到我需要使用的所有h文件:find.-name"*.h"但如何查找所有h AND cpp文件?
find . -name \*.h -print -o -name \*.cpp -print
要么
find . \( -name \*.h -o -name \*.cpp \) -print
find -name "*.h" -or -name "*.cpp"
(编辑以保护被解释为格式化的星号)
Paul Tomblin 已经提供了一个很棒的答案,但我想我看到了你正在做的事情的模式.
有可能你会使用find来生成一个文件列表,以便有一天使用grep进行处理,并且对于这样的任务,存在一个更加用户友好的工具,Ack
适用于任何支持perl的系统,并以递归方式搜索给定字符串的所有C++相关文件,就像在
ack "int\s+foo" --cpp
"--cpp"
默认情况下匹配.cpp .cc .cxx .m .hpp .hh .h .hxx
文件
(默认情况下它也会跳过存储库目录,因此不会匹配恰好看起来像文件的文件.)
一个简短明了的方法find
是:
find . -regex '.*\.\(cpp\|h\)'
从手册页-regex
:"这是整个路径上的匹配,而不是搜索." 因此需要前缀.*
以匹配./dir1/dir2/...
文件名之前的路径的开头.