-rスイッチを使用せずにgrepを使用して親フォルダのサブフォルダにあるファイル内のテキスト文字列を見つける方法

-rスイッチを使用せずにgrepを使用して親フォルダのサブフォルダにあるファイル内のテキスト文字列を見つける方法

私はSolaris 10を使用していますが、grep1つはin /usr/bin、もう1つはoutです/usr/xpg4/bin。使用方法に関する情報を探していましたが、grepすべての回答に私のバージョンの-r切り替えに関する情報が記載されています。-Rgrep

答え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

/usr/sfw/bin/ggrepSolarisでは、次のパスに存在するggrepを使用できます。
/usr/sfw/bin/ggrep -H 'search-term' <file-name>*
特定の単語で始まる一連のファイル名から検索語を検索します。

関連情報