2010-06-01 35 views
23

我想解壓歸檔文件「tar123.tar.gz」到目錄/ myunzip/tar123 /「使用shell命令。untar filename.tr.gz到目錄「文件名」

tar -xf tar123.tar.gz將解壓文件,但與我工作在同一目錄中。

如果文件名爲「tar233.tar.gz」,我想將它解壓縮到/myunzip/tar233.tar.gz「,因此目標目錄將基於文件名。

有誰知道如果tar命令可以做到這一點?

回答

30

使用bash和GNU焦油

file=tar123.tar.gz 
dir=/myunzip/${file%.tar.gz} 
mkdir -p $dir 
tar -C $dir -xzf $file 
+0

這裏的問題是,我不知道文件名是什麼。它將是一個版本文件,所以今天它可能是1.tar.gz,但明天它可能是2.tar.gz.有沒有辦法只是說「文件=什麼 - 在/家/用戶」? – Jorre 2010-06-01 16:16:55

+0

你必須以某種方式知道它。如果他們排序,你可以使用'file = $(ls -1 $ pattern | tail -1)''。 – 2010-06-01 16:57:37

4

您可以在使用-C標誌提取之前更改目錄,但該目錄必須已經存在。 (如果您創建特定文件的目錄,我強烈反對美其名曰foo.tar.gz - 。擴展意味着它是一個存檔文件,但它實際上是一個目錄導致混亂)

2

嘗試

file=tar123.tar.gz 
dir=/myunzip/$(basename $file .tar.gz) # matter of taste and custom here 
[ -d "$dir" ] && { echo "$dir already exists" >&2; exit 1; } 
mkdir "$dir" && (gzip -d "$file | (cd "$dir" && tar xf -)) 

如果你使用的是GNU tar,你也可以給它一個選項-C "$dir"這將導致它在提取之前切換到目錄。但是即使青銅器時代焦油,上面的代碼也應該可以工作。

免責聲明:以上均未經過測試。

23
tar -xzvf filename.tar.gz -C destination_directory 
+1

我只需要'-C'部分,謝謝! – juanmirocks 2016-08-15 07:53:38

相關問題