備忘録でございます。
目的
複数のファイルをtar.gzもしくはtgzにまとめているアーカイブファイルの中身を確認したい。
また、ファイル名だけではなくアーカイブファイルのテキストなんかも参照したい。
用は、tgzを解凍してcatとかでテキスト開くのがいちいちめんどくさいから、アーカイブファイルのままでcatとかでテキスト参照したい、って感じです。
ログとかいちいちtar.gzで固められちゃってることが多くて、そのたびに解凍して・・・みたいなのが非常にめんどくさかったので・・・
環境
$ uname -a Linux localhost 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/redhat-release CentOS release 6.7 (Final)
事前準備
今回、以下のようなアーカイブファイルを用意しました。
$ ls -l ./test -rw-r--r-- 1 root root 18 7月 30 13:32 2019 test1.txt -rw-r--r-- 1 root root 18 7月 30 13:32 2019 test2.txt -rw-r--r-- 1 root root 18 7月 30 13:32 2019 test3.txt
$ cat ./test/test1.txt test1 test1 test1 $ cat ./test/test2.txt test2 test2 test2 $ cat ./test/test3.txt test3 test3 test3
こいつを固めたものを用意
$ tar czvf test.tgz ./test/
これで準備万端です。
手順
中身のファイル名だけを参照したいのであれば、lessが一番手っ取り早いです。
$ less ./test.tgz drwxr-xr-x root/root 0 2019-07-30 13:33 test/ -rw-r--r-- root/root 18 2019-07-30 13:32 test/test1.txt -rw-r--r-- root/root 18 2019-07-30 13:32 test/test3.txt -rw-r--r-- root/root 18 2019-07-30 13:32 test/test2.txt
これだけでtar.gz内に固められているファイルの一覧が取得できます。
まじでlessって便利なコマンドだなあ・・・
固めたまま、中のテキストファイルを参照したい、
例えばtest1.txtを参照したい場合、tarの -O オプションを使用します。
$ tar -zxOf test.tgz test/test1.txt test1 test1 test1
これでアーカイブ展開しなくても中身を見ることができます。
めっちゃ深い階層までtar.gzで固められてたら展開がすごいめんどくさいので、この方法は楽ですね。
ちなみに、「解凍しないで」とか言っちゃってますが、展開したアーカイブをファイル出力ではなく標準出力しているだけで、内部的にはがっつり解凍しています。
が、まあこっちの表現のほうが分かりやすいので良いでしょう(?)
まとめ
- tar.gzでまとめられているファイルの一覧はless
- tar.gz内のファイルを参照したい場合はtarの-Oオプションを使用
いちいちアーカイブを展開してファイル出力していると容量を圧迫したりしますしね・・・
コメント