2014-07-10 25 views
1

確切的文件我目前使用此命令提取存檔快速的方法來提取檔案

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

回答

0
  • 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'文件。 –