我可以使用tar命令提取一个文件或目录,并提供一个特定的名称,我想它提取?

可能重复:
我可以使用tar提取特定文件夹到另一个文件夹吗?

我是Linux新手,想知道是否可以通过给它一个新的名称或path来提取特定的文件或目录。 例如,如果我的档案有文件夹sample1,sample2和sample3,我希望能够提取sample3然而作为sample4。 同样的问题适用于文件。

有两种方法可以完成此任务。

  1. tar有一个-s选项,定义如下:

    -s模式

    根据模式修改文件或归档成员名称。 该模式具有格式/旧/新/ [gps]。 老是一个基本的正则expression式。 如果不适用,则跳过该模式。 new是匹配部分的replacestring。 〜用相应的被捕获组的内容replace为1到9。 可选的跟踪g指定匹配应在匹配的部分之后继续,并在第一个不匹配的模式上停止。 可选的结尾s指定该模式适用于符号链接的值。 可选的结尾p指定在成功replace之后,原始path名称和新path名称应打印为标准错误。

    您可以运行tar xf <archive file> -s /sample3/sample4/以达到您想要的结果。

  2. tar可以将文件直接提取到标准输出,之后您可以使用标准的Unix文件redirect操作将输出定向到任何您想要的文件。

    示例: tar xf <archive file> -O sample3 > sample4

    请注意,“sample3”文件名不是-O参数的参数; 它正在被tar使用来限制提取到那个文件。 如果你没有指定sample3 ,那么tar会提取档案中的每一个文件,并把它们组合成一个大的未压缩的输出文件。