Tar
使用單個 tar 呼叫提取多個 .tar.gz 文件
我想知道是否(當然,如何)可以告訴
tar
在一次執行中提取多個文件。我是一個有多年經驗的 Unix 使用者,當然我知道你可以使用
for
orfind
或類似的東西tar
為你想要提取的每個存檔呼叫一次,但我想不出一個工作命令行導致我的tar
一次提取兩個 .tar.gz 文件。(不,沒有任何問題for
,我只是在問是否可以沒有。)我是出於好奇而問這個問題,也許
- 有一個奇怪的
tar
地方支持這個- 有人知道如何使用我嘗試時向我建議的
-M
參數tar``tar -zxv -f a.tgz -f b.tgz
- 我們都是盲人,這很容易做到——但我在網路上找不到任何沒有使用
for
orfind
or or or orxargs
or like 的提示。請不要回复
tar -zxvf *.tar.gz
(因為那行不通),而僅在您完全確定的情況下回复“不起作用”(也許也有一個很好的解釋原因)。**編輯:**有人指出我在 Stack Overflow 上回答了這個問題,它非常詳細地說,如果不破壞目前的
tar
語法,這是不可能的,但我認為這不是真的。恕我直言,使用tar -zxv -f a.tgz -f b.tgz
ortar -zxv --all-args-are-archives *.tar.gz
不會破壞現有語法。
這是可能的,語法很簡單:
$ cat *.tar | tar -xvf - -i
-i 選項忽略 tar 檔案末尾的 EOF,來自手冊頁:
-i, --ignore-zeros ignore blocks of zeros in archive (normally mean EOF)
對於 * .tar.gz:
for file in *.tar.gz; do tar -zxf "$file"; done
對於 * .tar.bz2:
for file in *.tar.bz2; do tar -jxf "$file"; done
對於 * .tar.xz:
for file in *.tar.xz; do tar -Jxf "$file"; done
對於 * .tar.zst 新:
for file in *.tar.zst; do tar --zstf -xf "$file"; done