私はSolaris 10を使用していて、2つのgrep
バージョンがあり、1つは/usr/bin
に、もう1つは/usr/xpg4/bin
にあります。 grep
を使用して、親ディレクトリのサブフォルダ内のファイル内のテキストを検索する方法についての回答を探しています。すべての回答は、私のバージョンのgrep
では利用できない-r
または-R
スイッチについて語っています。
標準(POSIX)構文は次のとおりです。
find /path/to/parent -type f -exec grep 'XXX' /dev/null {} +
(/dev/null
は、grep
が常にファイル名を出力するようにするためのものです)。これは、Solarisを含むすべてのPOSIXシステムで機能します。動作しないことがわかっている90年代以降の唯一の既知のシステムは古い(現在は非常に古い)GNUシステムです。
GNUは最初に-print0
述語とxargs
の代わりに-0
オプションを導入しました。
find /path/to/parent -type f -print0 | xargs -0 grep 'XXX' /dev/null
これをサポートする実装は他にもいくつかありますが、Solarisはサポートしていません。
上記では、理論的には、ファイルがない場合にgrep
を実行しないように-r
オプションを追加する必要がありますが、これはportableではなく、この特定のケースでは機能的に違いはない