Linux系统中查看tar.gz中的文件明细的常用命令

在日常运维中你可能会有几十G或者上百G的文件压缩包,要查看里面的每个文件的大小的话,解压出来可能需要很长时间,而且要占用大量磁盘空间和系统CPU资源,因此,不解压查看文件大小很有必要,所以本文给大家分享了Linux查看tar.gz中的文件明细的常用命令

核心命令

最常用、最核心的命令是:

tar -tzf archive.tar.gz

让我们分解一下这个命令:

  • -t:表示 list(列出),即列出归档内容。
  • -z:表示通过 gzip 过滤器进行操作。因为文件是 .gz 格式,所以需要这个选项来解压。
  • -f archive.tar.gz:指定要操作的文件名。
  • -v(可选):如果需要更详细的** verbose**(详细信息),可以加上此选项,它会显示文件权限、所有者、大小、修改时间等。

常用命令示例

这里是一些不同场景下的常用命令:

1. 基本列表(最常用)

简单地列出归档文件中的所有文件和目录。

tar -tzf archive.tar.gz

2. 详细列表

使用 -v 选项,显示类似 ls -l 的详细信息,包括权限、所有者、大小和修改时间。

tar -tzvf archive.tar.gz

输出示例:

drwxr-xr-x root/root         0 2023-10-05 14:30 myproject/
-rw-r--r-- root/root      1234 2023-10-05 14:30 myproject/file1.txt
-rw-r--r-- root/root      5678 2023-10-05 14:31 myproject/script.sh

3. 结合分页工具

如果归档文件非常大,列表很长,可以将其通过管道 (|) 传递给 lessmore 命令进行分页查看。

tar -tzvf large_archive.tar.gz | less

4. 结合 grep 过滤

如果你只想查找归档文件中是否包含某个特定文件或某一类文件,可以结合 grep 使用。

# 查找归档中所有的 .jpg 文件
tar -tzf archive.tar.gz | grep '.jpg$'

# 查找名为 "config" 的文件或目录
tar -tzf archive.tar.gz | grep '/config$'

5. 仅查看顶层目录结构

有时你只关心根目录下有什么,而不想看到所有深层的文件明细。

tar -tzf archive.tar.gz | grep -o '^[^/]*' | sort | uniq

或者一个更简单但可能不太精确的方法是:

tar -tzf archive.tar.gz | head -20

注意事项和技巧

顺序很重要:选项 -f 必须后面紧跟文件名。习惯上,我们通常把 -f 放在所有选项的最后。

  • 正确tar -tzvf myfiles.tar.gz
  • 也正确(传统风格)tar tvzf myfiles.tar.gz
  • 错误tar -f myfiles.tar.gz -tzv (这通常也能工作,但不符合规范)

处理 .tar.gz.tgz.tar.gz.tgz 是相同格式的两种不同扩展名。上述所有命令对两者都适用。

tar -tzvf archive.tgz

查看其他压缩格式的 tar 包

tar -tjvf archive.tar.bz2
tar -tJvf archive.tar.xz
tar -tvf archive.tar
  • .tar.bz2:使用 -j 选项代替 -z
  • .tar.xz:使用 -J 选项(大写 J)。
  • 未压缩的 .tar:省略 -z, -j, -J 等压缩选项。

只是查看,不会解压:请放心,tar -t 命令仅仅是读取和列出文件列表,不会将归档中的文件实际解压到你的磁盘上。

总结

需求 命令
快速查看里面有什么文件 tar -tzf file.tar.gz
查看详细信息(权限、大小等) tar -tzvf file.tar.gz
列表太长,想一页一页看 tar -tzvf file.tar.gz | less
查找特定文件 tar -tzf file.tar.gz | grep "filename"
查看 .tar.bz2 文件 tar -tjvf file.tar.bz2