패턴이 포함된 줄을 출력하지 않고 패턴이 포함된 파일을 나열하고 싶습니다. 나는 이것이 이것을 하는 데 사용될 수 있다고 생각한다 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