파일 이름만 반환하려면 grep에 어떤 매개변수를 전달해야 합니까?

파일 이름만 반환하려면 grep에 어떤 매개변수를 전달해야 합니까?

저는 grep을 사용하여 웹 서버에 있는 여러 파일에서 특정 텍스트 부분을 찾으려고 합니다. 문제 없습니다. 내가 원하는 것보다 훨씬 더 많은 정보를 반환합니다. 이상적으로는 파일 목록만 반환합니다. 텍스트가 파일의 여러 위치에 있는 경우 파일 이름은 한 번만 나열됩니다.

현재 나는 다음과 같은 것을 사용하고 있습니다 :

grep -ir essay_ "mysite"

내 사이트의 모든 디렉토리에서 Essay_라는 단어에 대해 대소문자를 구분하지 않는 재귀 검색을 수행합니다. 반환되는 내용은 다음과 같습니다.

mysite/dot/contest_declaration.php:$questions = $db->get_results("SELECT * FROM dot_essay WHERE active = 1 order by display_order asc");
mysite/dot/contest_declaration.php:     $db->query("DELETE FROM dot_essay_xref WHERE entry_id = $svar_entry_id");
mysite/dot/contest_declaration.php:     $id = $question->essay_id;
mysite/dot/contest_declaration.php:     $answer = ${"essay_$id"};
shoppermarketexpo/dot/print_declaration.php:        $questions = $db->get_results("SELECT * FROM dot_essay WHERE active = 1");

내가 돌려받고 싶은 것은 다음과 같습니다.

mysite/dot/contest_declaration.php
mysite/dot/print_declaration.php

답변1

-l, --files-with-matches
일반 출력을 억제하고 대신 print는 일반적으로 각 입력 파일의 이름을 인쇄합니다. 검색은 첫 번째 일치에서 중지됩니다. ( -l POSIX에서 지정)

~에서GNU 구현 매뉴얼grep. 위에서 언급했듯이 -l(l목록)은 표준적이고 이식 가능하며 --files-with-matches(일반적으로 긴 옵션) GNU 확장입니다.

답변2

-l(el) 또는 --files-with-matches명령줄 스위치가 필요합니다.

일반 출력을 억제합니다. 대신 print는 일반적으로 각 입력 파일의 이름을 인쇄합니다. 검색은 첫 번째 일치에서 중지됩니다. (-l은 POSIX에 의해 지정됩니다.)

관련 정보