我使用的是 Solaris 10,有两个grep
版本,一种是 in /usr/bin
,另一种是/usr/xpg4/bin
.我一直在寻找有关如何使用grep
.所有答案都谈到-r
或-R
切换我的版本没有可用的grep
。
答案1
标准 (POSIX) 语法是:
find /path/to/parent -type f -exec grep 'XXX' /dev/null {} +
(这/dev/null
是为了确保grep
始终打印文件名)。这适用于所有 POSIX 系统,包括 Solaris。唯一已知的 90 后系统无法正常工作的是旧的(现在非常旧的)GNU 系统。
GNU 最初引入了一个-print0
谓词和一个-0
选项来xargs
代替:
find /path/to/parent -type f -print0 | xargs -0 grep 'XXX' /dev/null
现在有一些其他实现支持该功能,但 Solaris 不支持。
上面,理论上,您希望添加-r
选项以避免grep
在没有文件的情况下运行,但这并不像便携的在这种特殊情况下,不会产生功能差异
答案2
使用 GNU grep
(如果已安装):
ggrep -A3 -B23 'word' -R /log/
这将检查文件夹中的每个文件是否匹配正则表达式word
,并将显示输出和文件路径。
GNUgrep
支持该-R
标志。
答案3
只需使用 ggrep,它在Solaris上存在于/usr/sfw/bin/ggrep
这样的路径上:
/usr/sfw/bin/ggrep -H 'search-term' <file-name>*
它在一组以特定单词开头的文件名上搜索您的搜索词。