Grep
grep 在進行遞歸搜尋時列印相對文件路徑
我試圖找出項目所依賴的休眠版本(這與我的問題是正交的)。
我們有一個包含多個子項目的父項目,我知道這是在一個或多個
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.