find… -exec grep으로 파일 이름과 줄 번호를 모두 반환하는 방법은 무엇입니까?


45

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

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

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

답변:


51

명령 행 스위치 는 파일이 하나만 있어도 파일 이름을 -H강제 grep로 인쇄합니다.

% 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.

같은 것을 참고 코지로는 말한다 주석 , 이것은 POSIX 표준의 일부가 아닙니다; GNU와 BSD grep에 있지만 일부 시스템에는 없을 수도 있습니다 (예 : Solaris).


4
-H플래그 grep비표준 GNU 확장 이라는 플래그를 지적하고 비 GNU 시스템에 대한 대체 접근법을 제시 함으로써 개선 될 수 있습니다 .
kojiro


-1

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

grep -rn "String to search " * 

1
사실이지만, 이것이 기존 답변에 추가되는 것을 보지 못합니다.
와일드 카드

그리고 현재 디렉토리에 하나의 (점이 아닌) 파일이 있으면 파일 이름이 표시되지 않습니다.
G-Man, 'Reinstate
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.