2017-07-19 21 views
0

何度も、特定のタイプのすべてのファイルのパターンをディレクトリから検索する必要があります。たとえば、* .h、* .cpp、* .c以外のファイルを調べないようgrepに依頼する必要があります。しかし、私が入力した場合:grepとfindの組み合わせのエイリアスが必要です

grep -r pattern . 

すべてのファイルを調べます。私が入力した場合:

grep -r pattern *.c 

それは(私の場合はなしフォルダ)の* .cフォルダ内の* .c現在のフォルダ内のファイル(私の場合はなしファイル)とファイルをしようとします。私はあまりにもすべてのフォルダを調べるだけでなく、指定されたタイプのファイルに尋ねる。私はgrepはこの目的のために使用するのに十分ではないと思います。だから、私もこのように見つけることから助けを得ます:

まず、助けを得ることが正しいかどうかを教えてください。 grepで十分でしょうか?

mygrep pattern c 

は 'と `の使用を避け、同じコマンドに変換し、シンプルにするために:第二に、私はこのように使用するのbashのエイリアスを作成することを好みます。私はそれを変更しようとしたが、私は成功したエイリアスに成功することができませんでした

grep: c: No such file or directory 

alias mygrep="grep $1 `find . -name '*$2'`" 

しかし、それはエラーを仕事との問題はありません:私は試してみました。

+1

のように試してください。 '--exlude'や' -exclude-dir' ..どんな場合でも、エイリアス – Sundeep

答えて

3

これは、より良いfunction than an aliasとして行われ、grep-exec代わりのfindpassing the outputを使用することでしょう。その出力は単語の分割とグロブの対象になるため、そのまま驚くべき結果を生み出すことができます。代わりに、 `grep -r --include = '* .c' 'pattern'`という特定のファイルタイプのみを検索するには、

mygrep() { 
    find . -name "*$2" -exec grep "$1" {} + 
} 
+0

oh okの代わりに関数を使用してください。この関数をどこに置くべきですか? – hamidi

+0

@hamidiあなたはあなたの '.bash_profile'に置くか、別名 –

+0

ohxを置くとどこにでも置くことができます。 grepの色を保持できますか? – hamidi

関連する問題