再帰検索は、Solaris では grep では機能しません。

再帰検索は、Solaris では grep では機能しません。

私たちのSolarisサーバーではこれがうまくいかないことがわかりましたgrep -r。これは私が使用する一般的なアプローチですgrepegrep同じ行動をしているようです。

grep機械を制御できない場合に再帰検索を実行する方法はありますか?それともfind出力をここに接続する必要がありますかgrep

答え1

以下を使用する場合は、findこれが最速の方法です。

find . -type f -exec grep pattern {} +

ただし、Gnu grepはすでにコンピュータにインストールされている可能性が高いです。

これはSolaris 11の基本インストールの一部です/usr/gnu/bin/grep。 Solaris 10の場合も同様です/usr/sfw/bin/ggrep。以前のバージョンでは、sunfreewareまたは他のリポジトリからインストールされている可能性があるため、および/usr/local/bin/grep共通/opt/csw/bin/grepの場所を確認してください。

答え2

使用タイトな捕獲逆にインストールされている場合。

たとえば、現在のディレクトリからすべてのサブディレクトリ()まで "mysearchstring"を検索し、一致する-Rファイル名とパスを表示し(-H)、バイナリを無視します(-I)。*コマンドの最後に。

/usr/sfw/bin/ggrep -H -R -I "mysearchstring" *

ggrepは、/usr/sfw/bin EXPORTコマンドを使用して構成ファイルに追加すると、コマンドラインから直接呼び出すことができます。

PATH=$PATH:/usr/sfw/bin
export PATH

Solaris バージョン: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise

答え3

私はSolarisに慣れていませんが、GNU / LinuxからSolarisに切り替えると、ほとんどのコマンドが少し異なる動作をすることがわかります。 UnixツールのGNUバージョンには、「排他的」Unixにはない追加機能があります。

GNU grepをダウンロードできます。ここその後、コンパイルしてインストールします。

ルートアクセス権がある場合は、ユーティリティが/usr/localにインストールされるように設定--prefix = / usr / localを実行する必要があります。

rootアクセス権がない場合は、configure --prefix = $ {HOME}を実行してユーティリティをホームディレクトリにインストールする必要があります。

答え4

以下からスタンドアロンのackPerlスクリプトをダウンロードしてください。http://betterthangrep.com/、それをあなたのものに入れ、$HOME/binそれを使用する方法を学びなさい。私は広告したように日常的な開発作業でgrepよりもうまく機能することがわかりました。

関連情報