
私は Solaris 10 を使用しており、と の の2 つのgrep
バージョンを持っています。 を使用して親ディレクトリのサブフォルダ内のファイル内のテキストを検索する方法についての回答を探していました。すべての回答はまたはスイッチについて説明していますが、私の のバージョンではこれらは利用できません。/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
)。これは、Solaris を含むすべての POSIX システムで機能します。これが機能しないことが知られている 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
一致するかどうかフォルダー内のすべてのファイルがチェックされ、ファイル パスとともに出力が表示されます。
GNU はgrep
この-R
フラグをサポートしています。
答え3
Solaris では次のようにパスに存在する ggrep を使用するだけです/usr/sfw/bin/ggrep
。
/usr/sfw/bin/ggrep -H 'search-term' <file-name>*
特定の単語で始まるファイル名のグループで検索用語を検索します。