grep을 사용하여 패턴이 포함된 파일 이름만 출력합니다(라인 출력 없음).

grep을 사용하여 패턴이 포함된 파일 이름만 출력합니다(라인 출력 없음).

패턴이 포함된 줄을 출력하지 않고 패턴이 포함된 파일을 나열하고 싶습니다. 나는 이것이 이것을 하는 데 사용될 수 있다고 생각한다 grep. grep이런 의미에서는 어떻게 사용해야 할까요? 예를 들어 다음 명령은 모든 파일에서 "stringpattern"(대/소문자 구분)이 포함된 모든 줄을 제공합니다 .txt. 파일명(±줄번호)만 알고 싶습니다.

grep -ni stringpattern *.txt

이상적으로는 문자열/패턴이 파일에서 여러 번 발생하는 경우 파일에 여러 줄의 출력이 있기를 바랍니다.

답변1

일치하는 파일만 필요한 경우:

grep -lie pattern -- *.txt

grep을 사용하여 파일과 줄 번호만 인쇄할 수는 없다고 생각합니다. 왜냐하면 option을 사용하면 -n모든 줄에 "file:line:match"가 인쇄되기 때문입니다. 파일 이름에 :개행 문자가 포함되어 있지 않거나 포함되어 있지 않으면 파이프를 통해 cut원하는 것만 얻을 수 있습니다.

grep -nie pattern -- /dev/null *.txt | cut -d: -f 1,2

/dev/null*.txt이 옵션은 파일 이름으로만 확장하는 경우 필수입니다. grep그렇지 않으면 파일 이름이 인쇄되지 않습니다. GNU 구현을 사용하거나 호환되는 GNU 구현을 사용하면 대신 /를 사용하여 파일 이름이 항상 인쇄되도록 grep할 수 있습니다 .-H--with-filename

답변2

awk '/pattern/{print FILENAME}' *.txt

관련 정보