grep 进行递归搜索时打印相对文件路径

xen*_*ide 6 osx freebsd grep

我试图找出该项目依赖于哪个版本的休眠(这与我的问题正交)。

我们有一个包含多个子项目的父项目,我知道这是在一个或多个pom.xml. 问题是,当它打印匹配时,它告诉我的是该行并且它是在 中找到的pom.xml,我想知道哪个子项目pom.xml

我怎样才能grep打印相对路径(绝对路径也可以,但不太漂亮)?如果不可能,欢迎提出替代建议。

$ grep -rI -3 org.hibernate pom.xml
Run Code Online (Sandbox Code Playgroud)

mdp*_*dpc 3

我建议结合使用 find、xargs 和 grep:

 cd top-dir
 find . -print -name 'pom.xml' -print0 | xargs -0 grep -l pattern
Run Code Online (Sandbox Code Playgroud)

我放入 -print0 / -0 选项,以便找到的目录中的特殊字符受到保护并正确处理。

上面将列出相对于与模式匹配的顶级目录的文件名。