在我们的 Solaris 服务器上,我发现这grep -r
不起作用,这是我使用的常用方法grep
。似乎egrep
有相同的行为。
鉴于我无法控制机器,有没有办法grep
执行递归搜索?或者我需要将find
into的输出通过管道传输吗grep
?
答案1
如果您想使用find
,这将是最快的方法:
find . -type f -exec grep pattern {} +
然而,Gnu grep 很可能已经安装在您的机器上。
它是 Solaris 11 上默认安装的一部分/usr/gnu/bin/grep
。对于 Solaris 10 也是如此,您可以在/usr/sfw/bin/ggrep
.在旧版本上,它可能是从 sunfreeware 或其他存储库安装的,请检查/usr/local/bin/grep
和/opt/csw/bin/grep
以获得常见位置。
答案2
使用格列普相反,如果已安装。
例如,从当前目录向下搜索“mysearchstring”到所有子目录( -R
),并显示匹配的文件名和路径( -H
) 并忽略二进制文件( -I
)。不要忘记*
命令末尾的 。
/usr/sfw/bin/ggrep -H -R -I "mysearchstring" *
ggrep 位于/usr/sfw/bin
您可以使用 EXPORT 命令将其添加到您的配置文件中,以便您可以直接从命令行调用它。
PATH=$PATH:/usr/sfw/bin
export PATH
Solaris 版本:SunOS 5.10 Generic_147440-13 sun4u sparc SUNW、SPARC-Enterprise
答案3
我不熟悉 Solaris,但如果您从 GNU/linux 切换到 Solaris,您会发现大多数命令的行为会略有不同。 GNU 版本的 Unix 工具具有“专有”Unix 中缺少的附加功能。
您可以下载 GNU grep(s)这里然后编译安装。
如果您确实具有 root 访问权限,您可能需要运行 configure --prefix=/usr/local 以便实用程序安装到 /usr/local
如果您没有 root 访问权限,您可能需要运行 configure --prefix=${HOME} 以便将实用程序安装到您的主目录中
答案4
从以下位置下载独立的ack
perl 脚本http://betterthangrep.com/,将它放入你的 中$HOME/bin
,然后学会使用它。我发现,正如广告中所说的那样,在我的日常开发工作中,它比 grep 更好用。