0

私は PHP コマンド ライン スクリプトを書いています。grep の専門家が、次のことを行うコマンドを考え出すのに役立つかどうか疑問に思っています。

現在のディレクトリ ($curDir) にある .java で終わるすべてのファイルについて、ファイル内で $str のインスタンスを検索し、インスタンスが見つかったかどうかを示すインジケータを返します。

インターネットで見つけたさまざまなビットからgrepコマンドをつなぎ合わせてみましたが、以前にgrepを実際に使用したことがないため、つなぎ合わせるのが少し難しいです。助けていただければ幸いです。

ありがとう!

4

2 に答える 2

1

これでうまくいくはずです:

exec("grep '$str' *.java", $output_array);

-lファイル名だけを出力したい場合に使用します。その他の grep オプションは、http:
//unixhelp.ed.ac.uk/CGI/man-cgi? grep にあります。

内容によって$strは、渡す必要がある場合がありますescapeshellarg():
http://www.php.net/manual/en/function.escapeshellarg.php

于 2012-04-06T16:36:35.877 に答える
0

grep はその作業に適しています。

grep -rl '$str' .

そのコマンドは、文字列に一致するファイルのファイル名を報告します。各ファイル名は一度だけ報告されますが、それはあなたが望むもののようです。オプション "-r" は、ファイル システムを再帰的にトラバースすることを示し、オプション "-l" は、一致を含むファイルのみを報告することを示します。オプション「-H」と「-n」も頻繁に使用するので、チェックしてみてください。

于 2012-04-06T16:36:27.523 に答える