如何使用unix“找到”命令找到所有的cpp和h文件?

StackOverflow https://stackoverflow.com/questions/277999

  •  07-07-2019
  •  | 
  •  

我知道找到我需要使用的所有h文件: 找 。 -name" *。h" 但是如何找到所有的h和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 /...路径的开头。

find . -regex ".*\.[cChH]\(pp\)?" -print

这在cygwin中对我来说很好。

您可以使用以下简短形式的 find

find \( -name '*.cpp' -o -name '*.h' \) -print

-print 可以省略。只需在表达式之间使用 -o 就可以找到多种类型的文件并执行相同的工作(比方说计算md5sum)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top