[linux] 경로 / 파일을 표시하지 않고 grep : line

일치하는 줄만 어떻게 그 리핑하고 반환합니까? 즉, 경로 / 파일 이름이 결과에서 생략됩니다.

이 경우 현재 디렉토리의 모든 .bar 파일에서 FOO라는 용어를 검색하고 싶습니다.

find . -name '*.bar' -exec grep -Hn FOO {} \;



답변

필요가 없습니다 find. 특정 디렉토리 내에서 패턴을 찾고 있다면 이것으로 충분합니다.

grep -hn FOO /your/path/*.bar

어디 -h에서와 같이 파일 이름을 숨길 수있는 매개 변수입니다 man grep:

-h, –no 파일 이름

출력에서 파일 이름의 접두사를 표시하지 않습니다. 검색 할 파일이 하나만 있거나 표준 입력 만있는 경우 이것이 기본값입니다.

사용하고 있습니다

-H, –with 파일 이름

각 일치에 대한 파일 이름을 인쇄하십시오. 검색 할 파일이 둘 이상인 경우 이것이 기본값입니다.


답변

그냥 교체 -H와 함께 -h. man grep옵션에 대한 자세한 내용을 확인하십시오

find . -name '*.bar' -exec grep -hn FOO {} \;


답변

매뉴얼 페이지에서 :

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.


답변