快速的方法来提取档案

问题描述:

确切的文件我目前使用此命令提取存档快速的方法来提取档案

tar xzvf *.gz *.sql 

它位于内名为.tar.gz第一级只有1 .sql文件。像:

  • archive.tar.gz
    • bla.sql
    • 文件夹
    • ...

,但似乎这个命令扫描整个tar.gz的,它需要很长时间。

有没有什么快捷方式?有什么建议么?

+0

一个'.tar.gz'文件是压缩一个gzip连续的数据流。如果你想从中获取单个文件,你必须解压缩一切(你不能预先知道特定文件将在流中的位置) – knittl

+1

该命令不会提取“只有1个.sql文件”...通配符在'tar'甚至开始之前被扩展,所以命令的结果高度依赖于当前目录中的内容。你最终可能会运行'tar xzvf foo.gz test.tar.gz blah.gz really_goofy.tar.cpio.gz test.sql blah.sql foo.sql goober.sql' - 这可能不是你想要的。 。 – twalberg

  • archive.tar.gz
    • bla.sql
    • 文件夹
    • ...

如果你想只bla.sql提取,只需添加文件的完整路径(归档)参数:

tar xvf archive.tar.gz bla.sql 

又如:

  • test.tar.gz
    • foo.sql
      • bar.sql
      • 巴兹

如果你想提取foo.sqlbaz

tar xvf test.tar.gz foo.sql Folder/baz 

如果要提取所有.sql文件:

tar xvf test.tar.gz --wildcards "*.sql" 
+1

您可能要添加引号:''* .sql''。否则,在参数传递给'tar'之前,shell将执行扩展。 –

+0

你说得对,我编辑了我的答案。然而,我尝试了这些命令,并且一切正常(使用GNU bash 4.3和tar 1.27) –

+0

它们只能工作,因为当前目录中没有任何'.sql'文件。 –