ディレクトリあたりの検索結果の数を制限する方法

ディレクトリあたりの検索結果の数を制限する方法

フォルダごとの検索結果の数を制限する方法は次のとおりです。例:

次のコマンドを使用します。

grep --include=*.php -Ril '<?' '/var/www/'

次のメッセージが表示されます。

/var/www/test.php
/var/www/test1.php
/var/www/phpinfo1.php
/var/www/phpinfoo.php
/var/www/phpinfooo.php
/var/www/1/php.php
/var/www/1/php3.php
/var/www/1/index.php
/var/www/1/indexed.php
/var/www/1/indexin.php
/var/www/test/tester.php
/var/www/test/info.php
/var/www/test/inform.php
/var/www/test/conf.php

フォルダごとに3つの結果のみが必要なので、次のようになります。

/var/www/test.php
/var/www/test1.php
/var/www/phpinfo1.php
/var/www/1/php.php
/var/www/1/php3.php
/var/www/1/index.php
/var/www/test/tester.php
/var/www/test/info.php
/var/www/test/inform.php

ベストアンサー1

再帰 grep は、ディレクトリ構造に関係なくツリー全体を検索します。構造を繰り返し、各ディレクトリを個別にgrepする必要があります。

find /var/www -type d -print | while read dirname; do grep -sil '<?' "$dirname"/*.php | head -3; done

grep -sディレクトリにPHPファイルがない場合を処理します。

おすすめ記事