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
tar
OpenBSDのBSD実装は-O
フラグをサポートせず、標準pax
アーカイバはファイルを標準出力に抽出できません。