递归搜索不适用于Solaris 上的grep

递归搜索不适用于Solaris 上的grep

在我们的 Solaris 服务器上,我发现这grep -r不起作用,这是我使用的常用方法grep。似乎egrep有相同的行为。

鉴于我无法控制机器,有没有办法grep执行递归搜索?或者我需要将findinto的输出通过管道传输吗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

从以下位置下载独立的ackperl 脚本http://betterthangrep.com/,将它放入你的 中$HOME/bin,然后学会使用它。我发现,正如广告中所说的那样,在我的日常开发工作中,它比 grep 更好用。

相关内容