tar 아카이브에 있는 각 파일의 내용을 인쇄합니다.

tar 아카이브에 있는 각 파일의 내용을 인쇄합니다.

gzip으로 압축된 tar 파일의 파일을 나열하는 것은 쉽습니다 xvfz.

$ date >> a
$ date >> b

$ cat a b
Sun Sep 24 14:27:01 IDT 2017
Sun Sep 24 14:27:05 IDT 2017

$ cat dates.tgz | tar xfvz -
x a
x b

다음과 같은 정신으로 각 파일의 내용을 tar로 인쇄하는 우아한 방법이 있습니까?

$ cat dates.tgz | tar <?> -
a:
Sun Sep 24 14:27:01 IDT 2017
b:
Sun Sep 24 14:27:05 IDT 2017

답변1

나는 이것이 효과가 있을 것이라고 믿습니다:

tar --wildcards --to-stdout -xvf archive.tar.gz './*'

문제가 있을 수 있는 부분에 유의하세요 './*'. tar가 경로와 정확히 얼마나 일치하는지 잘 모르겠습니다. 분명히 이것은 아카이브에 절대 경로가 있는 경우 일치하지 않지만, 그냥이 '*'더 나은 옵션인지는 확실하지 않습니다.

나는 일부 tar 구현이 -O이를 허용할 것이라고 믿습니다. /replace 그것이 GNU 구현에만 해당되는지 --to-stdout는 확실하지 않습니다 .--wildcards


이것은 사용을 피하는 버전입니다--wildcards

tar -xOvf archive.tar.gz $(tar -tf archive.tar.gz)

답변2

tar-O또는 와 함께 GNU를 사용하는 것 외에는 --to-stdout이식 가능한 방법으로 이를 수행할 수 있는 좋은 방법이 없습니다 .

$ tar -tvzf dates.tgz
-rw-r--r-- kk/wheel         30 2017-09-25 08:41 a
-rw-r--r-- kk/wheel         30 2017-09-25 08:41 b

$ tar -Ov -xzf dates.tgz
a
Mon Sep 25 08:41:51 CEST 2017
b
Mon Sep 25 08:41:53 CEST 2017

tarOpenBSD의 BSD 구현은 -O플래그를 지원하지 않으며 표준 pax아카이버는 파일을 표준 출력으로 추출할 수 없습니다.

관련 정보