我需要在Windows中做一个递归grep,在Unix/Linux中类似这样:
grep -i 'string' `find . -print`
或更优选的方法:
find . -print | xargs grep -i 'string'
我只能使用cmd.exe,所以我只有Windows内置命令。我不能安装Cygwin,或任何第三方工具,如UnxUtils在这台服务器上的不幸。我甚至不确定我能安装PowerShell。是否建议仅使用cmd.exe内置程序(Windows 2003 Server)?
9条答案
按热度按时间l2osamch1#
findstr
可以执行递归搜索(/S),并支持regex语法的某些变体(/R)。7fyelxc52#
参数具有以下含义:
s
=递归p
=跳过不可打印字符i
=不区分大小写n
=打印行号要搜索的字符串是在
/c:
后面加上引号的位xtupzzrd3#
我只是用下面的命令搜索了一个文本,其中列出了包含我指定的“搜索文本”的所有文件名。
tjvv9vkg4#
在
src
文件夹中递归搜索import
单词:5lhxktic5#
我推荐一个很棒的工具:
native unix utils:
只要将它们解包并将该文件夹放入PATH环境变量中,瞧!:)
工作起来就像一个魅力,还有更多,然后只是grep;)
isr3a4wc6#
oxf4rvwz7#
Select-String
最适合我这里列出的所有其他选项,如findstr
,都不适用于大文件。下面是一个例子:
注意:需要PowerShell
nbewdwxp8#
如果你安装了Perl,你可以使用ack,可以在http://beyondgrep.com/上找到。
vtwuwzda9#
“findstr /spin /c:“string”[[drive:][path]filename[...]]”
类似于上面第二高的答案(由i_am_约尔夫于2009年3月30日22:26),显示了以下示例:“findstr /spin /c:“string”[文件]”
但是,运行“findstr /?“显示没有定义为“[文件]"的选项或参数。我相信他在这里暗示的是定义要搜索哪些文件的参数“findstr /?”描述为:“[[drive:][path]filename[...]]”它后来用以下方法定义了这个:“[drive:][path]filename”-指定要搜索的文件。
因此,为了不使用个人速记,我提供了findstr />在搜索某些文件时定义它的方式:“findstr /spin /c:“string”[[drive:][path]filename[...]]”