저는 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에 의해 지정됩니다.)