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


234

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

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

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

답변:


375

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

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

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

-h, --no 파일 이름

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

사용하고 있습니다

-H, --with 파일 이름

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


줄 번호를 생략 할 수 있습니까?
javadba

@javadba 아마도 별명을 사용하고 alias grep있습니다. 별칭을 생략하려면\grep ...
fedorqui 'SO stop harming'3

1
예, 별칭을 사용하고있었습니다.
javadba

8

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

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

6

매뉴얼 페이지에서 :

-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.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.