Grep

grep 在進行遞歸搜尋時列印相對文件路徑

  • January 4, 2022

我試圖找出項目所依賴的休眠版本(這與我的問題是正交的)。

我們有一個包含多個子項目的父項目,我知道這是在一個或多個pom.xml. 問題是,當它列印匹配時,它告訴我的只是該行並且它是在 中找到的pom.xml,我想知道哪個子項目pom.xml

我怎樣才能grep列印相對路徑(絕對也可以,但不那麼漂亮)?如果不可能,歡迎提出替代建議。

$ grep -rI -3 org.hibernate pom.xml

我建議使用 find、xargs 和 grep 的組合:

cd top-dir
find . -print -name 'pom.xml' -print0 | xargs -0 grep -l pattern

我輸入了 -print0 / -0 選項,以便找到目錄中的特殊字元受到保護並得到正確處理。

上面將列出與匹配模式的頂級目錄相關的文件名。

grep --with-filename -rI -3 org.hibernate pom.xml

從手冊頁:

      -H, --with-filename
         Print  the  file  name for each match.  This is the default when there is more than one file to
         search.

引用自:https://unix.stackexchange.com/questions/127330