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