在Windows操作系统上递归搜索一个字符串

19

我希望在Windows操作系统上递归地搜索我的项目中的一个字符串,例如“main”。我搜索到一个解决方案Windows recursive grep command-line

我尝试了两种不同的方法,但结果并不如预期。

例如,我的方法:

findstr /S "main" *.cpp

但是当我做出选择时

findstr /S "int main" *.cpp

我只是得不到我的主要函数。这两种方法之间有什么区别? 提供带空格的字符串有问题吗?


2
为什么这被标记为 C++ - P0W
1
@P0W.. 实际上我在我的项目中使用C++文件。如果它不值得标记,我可以将其删除。 - someone
1
这是离题了。findstr 不是 直接 相关于编程,而且你在搜索源文件的事实在我看来是无关紧要的。这个问题最好在SuperUser上处理。 - Captain Obvlious
@P0W... 实际上我不知道我们有 findstr 标签。感谢 P0W.. 感谢 @Mat - someone
3
@CaptainObvious,那么关于Unix命令行的每个问题都是不相关的吗?有趣。 - Joey
显示剩余3条评论
2个回答

33

这是因为 findstr 需要一个字符串集合 来进行搜索。为了实际匹配字符串 int main ,您需要使用 /C 选项:

findstr /s /C:"int main" *.cpp

相比之下,您的变量提供了每一行都带有 int 或者 main


4
有点晚了,但如果你使用

这个标签,
findstr /S "int.main" *.cpp

它将把“点”视为通配符,匹配一个空格,只要您不介意一些多余的匹配(在这种情况下不太可能出现),它就会正常工作。

在阅读上面的答案之前,我使用了这个方法,没有知道/C:选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接