递归搜索对 solaris 上的 grep 不起作用

Eri*_*son 21 grep solaris recursive

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

鉴于我无法控制机器,有没有办法grep执行递归搜索?还是我需要将输出通过管道传输find到 into grep

jll*_*gre 34

如果你想使用find,这将是最快的方法:

find . -type f -exec grep pattern {} +
Run Code Online (Sandbox Code Playgroud)

但是,您的机器上很可能已经安装了 Gnu grep。

它是 Solaris 11 中默认安装的一部分/usr/gnu/bin/grep。Solaris 10 也是如此,您可以在/usr/sfw/bin/ggrep. 在较旧的版本上,它可能是从 sunfreeware 或其他存储库安装的,请检查/usr/local/bin/grep/opt/csw/bin/grep查找常见位置。


Und*_*rse 7

如果已安装,请改用ggrep

例如,从当前目录到所有子目录 ( -R)搜索“mysearchstring” ,并显示匹配项 ( -H)的文件名和路径,并忽略二进制文件 ( -I)。不要忘记*命令末尾的 。

/usr/sfw/bin/ggrep -H -R -I "mysearchstring" *
Run Code Online (Sandbox Code Playgroud)

ggrep 位于/usr/sfw/bin 您可以使用 EXPORT 命令将其添加到您的配置文件中,以便您可以直接从命令行调用它。

PATH=$PATH:/usr/sfw/bin
export PATH
Run Code Online (Sandbox Code Playgroud)

Solaris 版本:SunOS 5.10 Generic_147440-13 sun4u sparc SUNW,SPARC-Enterprise


bsd*_*bsd 4

我不熟悉 Solaris,但如果您从 GNU/linux 切换到 Solaris,您会发现大多数命令的行为会略有不同。GNU 版本的 Unix 工具具有“专有”Unix 中缺少的附加功能。

您可以在此处下载 GNU grep(s) ,然后编译并安装。

如果您确实具有 root 访问权限,您可能需要运行 configure --prefix=/usr/local 以便实用程序安装到 /usr/local

如果您没有 root 访问权限,您可能需要运行 configure --prefix=${HOME} 以便将实用程序安装到您的主目录中