我需要在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)有什么建议吗?
没有powershell很难做到,为什么不能安装?
—
克里斯·巴伦斯
系统管理员正在锁定我们服务器上的权限。如果有人有任何Powershell建议,请将其丢弃,我将看看是否可以安装PowerShell。
—
安迪·怀特2009年
顺便说一句,我发现在linux中最好写:“ find。| xargs grep -i string”。区别在于,如果find返回一个很长的列表,则您可能超过了最大命令长度(这是我的事),并且您将根本无法执行grep。使用xargs grep时,每个找到的文件都会调用一次。
—
内森·费尔曼
Grep的许多版本,包括Gnu Grep,都提供内置的递归搜索(gnu.org/software/grep/manual/…),因此您的搜索可以这样编写
—
Scott Centoni 2015年
grep -i 'string' -R .
,就像@NathanFellman建议的那样,可以避免出现过长的命令问题。