私たちのSolarisサーバーではこれがうまくいかないことがわかりましたgrep -r
。これは私が使用する一般的なアプローチですgrep
。egrep
同じ行動をしているようです。
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
以下からスタンドアロンのack
Perlスクリプトをダウンロードしてください。http://betterthangrep.com/、それをあなたのものに入れ、$HOME/bin
それを使用する方法を学びなさい。私は広告したように日常的な開発作業でgrepよりもうまく機能することがわかりました。