如何使用 grep 在不使用 -r 開關的情況下在父資料夾的子資料夾中的檔案中尋找文字字串

如何使用 grep 在不使用 -r 開關的情況下在父資料夾的子資料夾中的檔案中尋找文字字串

我使用的是 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>*
它在一組以特定單字開頭的檔案名稱上搜尋您的搜尋字詞。

相關內容