如何列出所有源文件(* .c,* .cpp,* .h)


15

我想找到包含在Linux / MinGW / Cygwin中的源文件(* .c,* .cpp,* .h),并在所有子目录中递归。

我的基本想法是使用findgrep。但是,构建可以检查给定文件名的正则表达式是* .c,* .cpp或* .h并不容易。你能救我吗?

Answers:


13

这应该工作:

find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'


1

我会用:

find . -regex '.*\.\(c\|cpp\|h\)$' -print

1
在我的macbook中,没有a的脚本-E找不到任何东西。您可能需要添加-E(作为扩展)以使其更具可移植性,就像find -E . -regex '.*\.(c|h|cpp)' -print。;-)
pambda

1

快速和脏,并避免目录名称:

find . -type f -name *.[c\|h]

2
此命令有三个问题:1 *.cpp。找不到文件。它会找到*.|文件。3.如果当前目录中存在匹配的文件,则glob将展开。引用可以防止这种情况。
丹尼斯


0

我使用的mac pro也适用于bash。但每次我输入命令行:

find -name

它说非法选择。所以我把它简化为:

find *.c *.cpp *.h

并发现它真的有用!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.