15 我想找到包含在Linux / MinGW / Cygwin中的源文件(* .c,* .cpp,* .h),并在所有子目录中递归。 我的基本想法是使用find和grep。但是,构建可以检查给定文件名的正则表达式是* .c,* .cpp或* .h并不容易。你能救我吗? find grep regex — Nullptr source
4 find -regex '.*/.*\.\(c\|cpp\|h\)$' — 丹尼斯威廉姆森 source 什么是$在命令结束呢? — 阿里 1 @Ali:它将正则表达式锚定到行的末尾(它阻止查找foo.cpp.old例如命名的文件)。 — 丹尼斯威廉姆森
1 我会用: find . -regex '.*\.\(c\|cpp\|h\)$' -print — 卢布 source 1 在我的macbook中,没有a的脚本-E找不到任何东西。您可能需要添加-E(作为扩展)以使其更具可移植性,就像find -E . -regex '.*\.(c|h|cpp)' -print。;-) — pambda
1 快速和脏,并避免目录名称: find . -type f -name *.[c\|h] — user282564 source 2 此命令有三个问题:1 *.cpp。找不到文件。它会找到*.|文件。3.如果当前目录中存在匹配的文件,则glob将展开。引用可以防止这种情况。 — 丹尼斯
0 我使用的mac pro也适用于bash。但每次我输入命令行: find -name 它说非法选择。所以我把它简化为: find *.c *.cpp *.h 并发现它真的有用! — Schawn source
$
在命令结束呢?