디렉터리당 검색 결과 수를 제한하는 방법

디렉터리당 검색 결과 수를 제한하는 방법

폴더당 검색 결과 수를 제한하는 방법은 다음과 같습니다. 예:

다음 명령을 사용하십시오.

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 파일이 없는 경우를 처리합니다 .

답변2

이런 일이 있으면 어떻게 해야 할까요?

for DIR in $( find ./test -mindepth 1 -type d ); do
    find "$DIR" -type f | grep "\.php" | head -n3
done

find ./test -mindepth 1 -type dtest상위 디렉터리를 제외한 디렉터리 내의 모든 디렉터리를 나열합니다.

find "$DIR"각 디렉토리의 전체 경로를 나열한 다음 php 확장자를 grep하고 head를 사용하여 세 개의 경로를 나열하십시오.

mkdir test
cd test
mkdir dir{test,1,anotherdir} && touch dir{test,1,anotherdir}/file{a,b,c,d,e,f}.php
cd ..

산출:

./test/dirtest/filed.php
./test/dirtest/filec.php
./test/dirtest/filee.php
./test/dir1/filed.php
./test/dir1/filec.php
./test/dir1/filee.php
./test/diranotherdir/filed.php
./test/diranotherdir/filec.php
./test/diranotherdir/filee.php

관련 정보