find
를 사용할 때 문자열을 검색 할 때 파일 이름과 줄 번호를 어떻게 반환합니까? 하나의 명령에서 파일 이름을 반환하고 다른 명령과 줄 번호를 반환 할 수는 있지만 결합 할 수 없습니다.
파일 이름 : find . -type f -exec grep -l "string to search" {} \;
줄 번호 : find . -type f -exec grep -n "string to search" {} \;
답변
명령 줄 스위치 -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.
Kojiro 가 주석 , 이것은 POSIX 표준의 일부가 아닙니다. GNU와 BSD grep 모두에 있지만 일부 시스템에 없을 수도 있습니다 (예 : Solaris).
댓글
답변
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 " *
댓글
- 그 ' 사실이지만 ' 이로 인해 기존 답변에 추가되는 내용이 표시되지 않습니다.
- 하나만있는 경우 (점이 아닌 ) 파일이 현재 디렉토리에있는 경우 파일 이름이 표시되지 않습니다.
-H
플래그가grep
는 비표준 GNU 확장 이며 비 GNU 시스템에 대한 대체 접근 방식을 제시합니다.