*.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 파일에서 파일을 생성하는 대신 표준 출력으로 덤프를 추출하기 전에
z
gunzip을 추출합니다 (숫자 0이 아닌 대문자).
O
f
grep 옵션(JJoao에서 제안)
--label=...
지정된 태그를 파일 이름으로 사용하여
-H
일치하는 각 파일 이름을 인쇄합니다.
답변2
이 명령은 zgrep
내용을 추출하지 않고 .tar.gz 파일에서 작동합니다.