如何在不从命令行中解压缩的情况下查看tar.gz文件的内容?

我想查看存档的内容(文件和文件夹列表),例如tar.gz文件而不提取它。

有没有办法做到这一点?

在终端中运行以下命令以查看tar.gz文件的内容而不解压缩它:

 tar -tf filename.tar.gz 

在终端中列出压缩tarball文件的屏幕截图

你也可以使用vim

 vim filename.tar.gz 

less也可以打开gz压缩和未压缩的tar档案。 它也给你一个可爱的ls -l风格输出:

 $ less ~/src/compiz_0.9.7.8-0ubuntu1.6.debian.tar.gz drwxrwxr-x 0/0 0 2012-09-21 11:41 debian/ drwxrwxr-x 0/0 0 2012-08-09 13:32 debian/source/ -rw-rw-r-- 0/0 12 2012-08-09 13:32 debian/source/format -rw-rw-r-- 0/0 25 2012-08-09 13:32 debian/libdecoration0-dev.docs -rw-rw-r-- 0/0 25 2012-08-09 13:32 debian/compiz-dev.docs -rw-rw-r-- 0/0 347 2012-08-09 13:32 debian/compiz-core.install -rw-rw-r-- 0/0 125 2012-08-09 13:32 debian/libdecoration0-dev.install ... 

而且因为它less ,你可以滚动它,搜索它等等。然而它与其他压缩算法(根据我的经验)惨遭失败。

您可以使用z命令: zcatzlesszgrep

要查看文件内容,请使用:

 zcat file.gz 

要使用grep:

 zgrep test file.gz 

要检查文件之间的区别,请使用

 zdiff file1.gz file2.gz 

这些只是一些例子,还有更多。

tar-t标志会为你列出内容。 将其添加到您的其他标志(对于tar.gz-tvfj ,为tar.bz2-tvfj ),您可以在不提取的情况下进行浏览。 从那里你可以很容易地提取单个文件

 tar -xvfz mybackup.tar.gz path/to/file 

tar的一大问题是记住所有其他标志 。 所以我通常依靠7zp7zip-full软件包)来完成我的归档。 我不会声称它完全更好,但它几乎支持所有内容(无需指定压缩类型),并且参数是合乎逻辑的。

 7z l archive.ext 7z e archive.ext path/to/file 

它的能力肯定不足,但您不需要手册页来使用它。

还有Midnight Commander( mc )。 这是一个全面的基于准图形终端文件管理的badass,通过一些轻量级测试,它可以让你浏览.tar.gz.7z档案。 我不确定它支持多少其他人。

嗯,这取决于文件。 大多数(de)压缩程序都有一个标记列出存档内容的标志。

  1. tar / tar.gz / tgz / tar.xz / tar.bz2 / tbz文件

     $ tar tf foo.tgz dir1/ dir1/subdir1/ dir1/subdir1/file dir1/subdir2/ dir1/subdir2/file dir2/ 
  2. zip文件

     $ zip -sf foo.zip Archive contains: dir1/ dir2/ dir1/subdir1/ dir1/subdir1/file dir1/subdir2/ dir1/subdir2/file Total 6 entries (0 bytes) 
  3. 7zip文件

     $ 7z l foo.7z 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs) Listing archive: foo.7z -- Path = foo.7z Type = 7z Solid = - Blocks = 0 Physical Size = 168 Headers Size = 168 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2015-03-30 19:00:07 ....A 0 0 dir1/subdir1/file 2015-03-30 19:00:07 ....A 0 0 dir1/subdir2/file 2015-03-30 19:07:32 D.... 0 0 dir2 2015-03-30 19:00:07 D.... 0 0 dir1/subdir2 2015-03-30 19:00:07 D.... 0 0 dir1/subdir1 2015-03-30 19:00:06 D.... 0 0 dir1 ------------------- ----- ------------ ------------ ------------------------ 0 0 2 files, 4 folders 
  4. rar文件

      $ rar v foo.rar RAR 4.20 Copyright (c) 1993-2012 Alexander Roshal 9 Jun 2012 Trial version Type RAR -? for help Archive foo.rar Pathname/Comment Size Packed Ratio Date Time Attr CRC Meth Ver ------------------------------------------------------------------------------- dir1/subdir1/file 0 8 0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9 dir1/subdir2/file 0 8 0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9 dir1/subdir1 0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0 dir1/subdir2 0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0 dir1 0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0 dir2 0 0 0% 30-03-15 19:07 drwxr-xr-x 00000000 m0 2.0 ------------------------------------------------------------------------------- 6 0 16 0% 

这是大多数更受欢迎的存档格式。 考虑到所有这些,您可以编写一个使用适当命令的小脚本,具体取决于您为其提供的文件的扩展名:

 #!/usr/bin/env bash for file in "$@" do printf "\n-----\nArchive '%s'\n-----\n" "$file" ## Get the file's extension ext=${file##*.} ## Special case for compressed tar files. They sometimes ## have extensions like tar.bz2 or tar.gz etc. [[ "$(basename "$file" ."$ext")" =~ \.tar$ ]] && ext="tgz" case $ext in 7z) type 7z >/dev/null 2>&1 && 7z l "$file" || echo "ERROR: no 7z program installed" ;; tar|tbz|tgz) type tar >/dev/null 2>&1 && tar tf "$file"|| echo "ERROR: no tar program installed" ;; rar) type rar >/dev/null 2>&1 && rar v "$file"|| echo "ERROR: no rar program installed" ;; zip) type zip >/dev/null 2>&1 && zip -sf "$file"|| echo "ERROR: no zip program installed" ;; *) echo "Unknown extension: '$ext', skipping..." ;; esac done 

将该脚本保存在PATH并使其可执行。 然后,您可以列出任何存档的内容:

 $ list_archive.sh foo.rar foo.tar.bz foo.tar.gz foo.tbz foo.zip ----- Archive 'foo.rar' ----- RAR 4.20 Copyright (c) 1993-2012 Alexander Roshal 9 Jun 2012 Trial version Type RAR -? for help Archive foo.rar Pathname/Comment Size Packed Ratio Date Time Attr CRC Meth Ver ------------------------------------------------------------------------------- dir1/subdir1/file 0 8 0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9 dir1/file 0 8 0% 30-03-15 19:29 -rw-r--r-- 00000000 m3b 2.9 dir1/subdir1 0 0 0% 30-03-15 19:00 drwxr-xr-x 00000000 m0 2.0 dir1 0 0 0% 30-03-15 19:29 drwxr-xr-x 00000000 m0 2.0 dir2 0 0 0% 30-03-15 19:07 drwxr-xr-x 00000000 m0 2.0 ------------------------------------------------------------------------------- 5 0 16 0% ----- Archive 'foo.tar.bz' ----- dir1/ dir1/subdir1/ dir1/subdir1/file dir1/file dir2/ ----- Archive 'foo.tar.gz' ----- dir1/ dir1/subdir1/ dir1/subdir1/file dir1/file dir2/ ----- Archive 'foo.tbz' ----- dir1/ dir1/subdir1/ dir1/subdir1/file dir1/file dir2/ ----- Archive 'foo.zip' ----- Archive contains: dir1/ dir1/subdir1/ dir1/subdir1/file dir1/file dir2/ Total 5 entries (0 bytes) 

而且由于有人提到较小的编辑器,自然而然,emacs也可以这样做:

emacs显示存档的内容

为什么不使用vim来浏览您的存档和打开文件(至少是类似文本的文件):

 vim archive.tar.gz 

在此处输入图像描述

按箭头键滚动,然后按Enter键打开文件。

午夜指挥官( mc )也有一个很好的压缩文件查看器,虽然我认为这有点作弊,因为mc 一个文件管理器,虽然是基于文本的。

此外,如果你想要的只是查看压缩档案中的内容,你可以学习每个压缩器的“视图”命令。 tar tzvf将显示tar文件的内容, unzip -l将为zip文件执行,依此类推。

使用view filename.tar.gz也可以。 与vim完全相同,但没有写权限。