여러 .tar.gz 파일에 있는 동일한 파일의 Grep 문자열

여러 .tar.gz 파일에 있는 동일한 파일의 Grep 문자열

*.tar.gz 파일이 여러 개 있습니다. 그들은 모두 a, b, c라는 이름의 파일을 포함합니다. 파일을 추출하지 않고 여러 *.tar.gz 파일 아래에 있는 파일 b에서만 문자열 "foo"를 grep하는 방법이 있습니까?

답변1

"추출하지 않음"은 "추출된 파일을 디스크에 저장하지 않음"을 의미한다고 가정합니다.

for file in *.tar.gz ; do
    tar xzOf $file b | grep --label=$file/b -H foo
done

타르 옵션:

x지정된 tar 파일에서 파일을 생성하는 대신 표준 출력으로 덤프를 추출하기 전에
zgunzip을 추출합니다 (숫자 0이 아닌 대문자).
O
f

grep 옵션(JJoao에서 제안)

--label=...지정된 태그를 파일 이름으로 사용하여
-H일치하는 각 파일 이름을 인쇄합니다.

답변2

이 명령은 zgrep내용을 추출하지 않고 .tar.gz 파일에서 작동합니다.

관련 정보