【发布时间】:2010-10-16 10:20:02
【问题描述】:
我需要在 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。
-
顺便说一句,我发现在linux中最好写:“find .|xargs grep -i string”。不同之处在于,如果 find 返回一个很长的列表,您可能会超过最大命令长度(这发生在我身上),并且您根本无法 grep。对于每个找到的文件,使用 xargs grep 调用一次。
-
Grep 的许多版本,包括 Gnu Grep,都提供内置递归搜索 (gnu.org/software/grep/manual/…),因此您的搜索可以写成
grep -i 'string' -R .,就像 @NathanFellman 建议的那样,避免了过长的命令。
标签: windows command-line grep