Tar从大型tar包提取单个文件

时间:2020-01-09 10:42:14  来源:igfitidea点击:

问题描述:如何从tar包(例如images.tar)中提取单个文件或者文件列表,而不是提取整个tar包?
如何在Linux/UNIX操作系统下提取特定文件?

解决方法:GNU tar可以用于从tar包中提取单个或者多个文件。
要提取特定的存档成员,请提供其确切的成员名称作为参数,如-t选项所示。

从tar包中提取特定文件

从config.tar.gz tar包提取一个名为etc/default/sysstat的文件:

$ tar -ztvf config.tar.gz
$ tar -zxvf config.tar.gz etc/default/sysstat
$ tar -xvf {tar包.tar} {path/to/file}

有些人喜欢以下语法:

tar --extract --file={tar包.tar} {file}

从cbz.tar中提取一个名为css的目录:

$ tar --extract --file=cbz.tar css

基于通配符的提取

您还可以提取与特定通配符模式(通配符)匹配的文件。
例如,要从cbz.tar中提取所有以pic开头的文件,无论其目录前缀如何,您都可以执行:

$ tar -xf cbz.tar --wildcards --no-anchored 'pic*'

要提取所有php文件,请执行:

$ tar -xf cbz.tar --wildcards --no-anchored '*.php'

其中:

  • -x:指示tar提取文件。
  • -f:指定文件名/压缩包名称。
  • -v:详细(提取文件时显示进度)。
  • -j:通过bzip2过滤归档文件,用于解压缩.bz2文件。
  • -z:通过gzip过滤归档文件,用于解压缩.gz文件。
  • " wildcards":指示tar将命令行参数视为通配模式。
  • no-anchored:通知它该模式适用于任何/分隔符后面的成员名称。