【Linux】tar.gzを解凍せずに中身を参照する

Linux
スポンサーリンク

 

備忘録でございます。

 

スポンサーリンク

目的

複数のファイルを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オプションを使用

いちいちアーカイブを展開してファイル出力していると容量を圧迫したりしますしね・・・

コメント

タイトルとURLをコピーしました