find를 사용할 때 문자열을 검색 할 때 파일 이름과 줄 번호를 어떻게 반환합니까? 하나의 명령에서 파일 이름을 반환하고 다른 명령과 줄 번호를 반환 할 수는 있지만 결합 할 수 없습니다.

파일 이름 : find . -type f -exec grep -l "string to search" {} \;

줄 번호 : find . -type f -exec grep -n "string to search" {} \;

답변

명령 줄 스위치 -Hgrep가 하나의 파일로도 파일 이름을 인쇄하도록합니다.

% grep -n 7 test.in 7:7 % grep -Hn 7 test.in test.in:7:7 

 -H, --with-filename Print the filename for each match. 

Kojiro 주석 , 이것은 POSIX 표준의 일부가 아닙니다. GNU와 BSD grep 모두에 있지만 일부 시스템에 없을 수도 있습니다 (예 : Solaris).

댓글

  • 이 답변은 -H 플래그가 grep 비표준 GNU 확장 이며 비 GNU 시스템에 대한 대체 접근 방식을 제시합니다.

답변

find . -type f -exec grep -n "string to search" /dev/null {} + 

(또는 GNU grep의 경우 -H 옵션)

댓글

  • + 및 -H 모두 훌륭합니다. 감사합니다!
  • 그리고 이 답변과 관련된 항목 : unix.stackexchange.com/questions/3682/ …
  • +1 맞습니다. grep가 여러 파일 이름 인수를 갖도록하면 일치하는 파일 이름을 출력하도록 강제하기 때문입니다. 영리!

답변

귀하의 grep이 재귀 -r 플래그를 사용하면 요청이 해결됩니다.

grep -rn "String to search " * 

댓글

  • 그 ' 사실이지만 ' 이로 인해 기존 답변에 추가되는 내용이 표시되지 않습니다.
  • 하나만있는 경우 (점이 아닌 ) 파일이 현재 디렉토리에있는 경우 파일 이름이 표시되지 않습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다