2009-02-26 7 views

答えて

10
grep google *.php 

あなたは多くのディレクトリにまたがるする場合:

find . -name \*.php -print0 | xargs -0 grep -n -H google 

+0

後者のコードでは、サブディレクトリまたはマスターディレクトリがありますか? –

+0

名前が必要なのは、ファイルがどのファイルであったか分からないことがあるからです。特に、xargsがバッチ処理を行い、1つのファイルが残っていることが悪い場合は特に必要です。 –

+0

名前が埋め込まれた空白などの名前を持つディレクトリツリーで作業する場合は、-print0を使用して-0からxargsを使用する必要があることを忘れないでください。 –

0

使用「男のgrepを(コメントで説明したようにxargsのは一つだけ残っているファイルを思い付く場合、-Hが便利です)他の機能を見ることができます。

for i in $(ls *.php); do grep -n --with-filename "google" $i; done; 
+0

これは動作しません - コマンドがこのように書かれている場合、入力ファイルは "stdin"です – Alnitak

+0

あなたは正しいでしょう。コードを変更しました。 –

5

あなたは、「パラメータとしてワイルドカード残りの名前で、最初のPHPプログラムを実行し、出力にはgrepを実行する」を意味

$ *.php | grep 

を行うべきではありません。

それは次のようになります。

$ grep -n -H "google" *.php 

-nフラグは、行番号を行うためにそれを伝え、-Hフラグが唯一のファイルがあります場合でも、ファイル名を表示するように指示します。 Grepは、複数のファイルが検索されている場合はファイル名を表示するようにデフォルト設定しますが、一致するファイルの数に関係なく出力が一貫していることを確認することをお勧めします。

0
find . -name "*.php" -print | xargs grep -n "searchstring" 
1
find ./*.php -exec grep -l 'google' {} \; 
+0

ファイル名は取得されますが、行番号は取得されません。 –

2

http://betterthangrep.comでACKをご覧ください。あなたがしようとしているのは、次のようなものです:

ack google --php 
関連する問題