如何将 grep 与 glob 模式一起使用? (就像我们在 find 命令中使用它一样)

How to use the grep with globs patterns? (like we use it in find command)

让我们看看是否要找到以下格式的所有文件名

gstreamer_abc.c
gstreamer_xyz.c
gstreamer_abcxyz.c

然后我们可以使用下面的查找命令

find ./ -iname "gstreamer_*.c"

同样的方法我需要在文件中 grep 一些 API,如下所示

gstABCNode()
gstAnythingCanBeHereNode()
gstXyzNode()

我正在尝试一些东西

grep -rni "gst*Node"  ./
grep -rni "gst^\*Node" ./

但它没有提供我在这里需要的东西。首先,是否可以像这样使用 grep 进行搜索,或者如果可能,那么如何使用 grep 这种模式?

您只能grep这些文件:

grep --include "gstreamer_*.c" -rni "gst*Node"  ./

您的问题是 find 使用“globs”而 grep 使用正则表达式。对于 find* 表示“任意长度的字符串”。对于 grep* 表示“前面的元素(字符)的任意次数”。这样,您的命令:

grep -rni "gst*Node"  ./

搜索任何以 gs 开头的字符串、任意次数的 tNode(这可能不是您想要的)。而是尝试:

grep -rni "gst.*Node"  ./

.表示“任意字符”,所以.*真正表示“任意长度的字符串”。