linux之tar批量解壓檔案

2021-07-16 12:25:21 字數 1225 閱讀 3145

由於linux的tar命令不支援批量解壓,所以很多網友編寫了好多支援批量解壓的shell命令,收集了一下,供大家分享:

第一:for tar in *.tar.gz; do tar xvf $tar; done

for tar in *.tar.bz2; do tar xvf $tar; done

第二:用tar命令批量解壓某個資料夾下所有的tar.gz檔案

ls *.tar.gz | xargs -n1 tar xzvf

第三:find -maxdepth 1 -name "*.bz2"|xargs -i tar xvjf {}

這條命令可解壓當前目錄下的所有bz2檔案

批量解壓是比較鬱悶的事,以前嘗試各種方法,甚至用指令碼迴圈語句解壓都不行

現在發現這條命令可以搞定,maxdepth表示搜尋深度,1代表只搜尋當前目錄

第四:for i in $(ls *.tar);do tar xvf $i;done

問題:我想進行批量解壓tar檔案,使用tar -xvf *.tar會出錯,提示「not found in archive」。解決方法有很多,比如寫乙個指令碼之類的。 請問為什麼tar不支援這種萬用字元語法呢?是否有特殊的原因? 我試過gzip就支gzip -d *.tar.gz。

回答:萬用字元是shell解決的問題

如tar -xvf *.tar

實際上執行tar時,tar接收到的是

tar -xvf a.tar b.tar c.tar ...

如果當前目錄跟本沒有tar的東西,那麼tar就收到'*.tar'這個引數

與win不同,linux所有字元都可以作檔名,也即目錄中不存在著 *.tar這個檔案

為了防止 *.tar被shell解釋為a.tar b.tar c.tar...

可以給它加個單引號

用tar解開乙個archive時,語法是

tar -xvf <tarfile.tar>

<tarfile.tar> 是選項f所要求的,只能是乙個檔案,比如myfiles.tar。

是myfiles.tar所包含的歸了檔的檔案中的乙個或者多個成員檔案。如果是多個,可以用萬用字元。

先別跟我急,我知道,這些你是清楚的。但是,你的問題是,用了

tar -xvf *.tar

如樓上所說,tar接收到的是

tar -xvf a.tar b.tar c.tar ...

tar把你的意圖理解為,在a.tar裡解出b.tar c.tar ...

Linux 批量解壓tar包

某目錄下存在幾十個tar檔案,現需要全部解壓到另外乙個目錄中去,故寫了個簡單的指令碼來解決問題 bin bash written by hzy date 2014 10 06 src path path date des path path2 file list ls src path cd des...

Linux 解壓tar檔案

tar cxtzjvfppn 檔案與目錄 引數 c 建立乙個壓縮檔案的引數指令 create 的意思 x 解開乙個壓縮檔案的引數指令!t 檢視 tarfile 裡面的檔案!特別注意,在引數的下達中,c x t 僅能存在乙個!不可同時存在!因為不可能同時壓縮與解壓縮。z 是否同時具有 gzip 的屬性...

tar命令批量解壓方法

第一種 for tar in tar.gz do tar xvf tar done for tar in tar.bz2 do tar xvf tar done 第二種 用tar命令批量解壓某個資料夾下所有的tar.gz檔案 ls tar.gz xargs n1 tar xzvf 第三種 find ...