linux技巧總結之–tar檔案的批量加壓

來源:互聯網
上載者:User

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

第一種:

for tar in *.tar.gz;  do tar xvf $tar; donefor 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 zcvf linuxany.tgz --exclude='*/log/*' linuxany/

  排除指定檔案:

tar zcvf linuxany.tgz --exclude='*/*.log*' linuxany/
問題:
我想進行批量解壓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> <archived_file>
<tarfile.tar> 是選項f所要求的,只能是一個檔案,比如myfiles.tar。
<archived_file> 是myfiles.tar所包含的歸了檔的檔案中的一個或者多個成員檔案。如果是多個,可以用萬用字元。
先別跟我急,我知道,這些你是清楚的。但是,你的問題是,用了
tar -xvf *.tar
如樓上所說,tar接收到的是
tar -xvf a.tar b.tar c.tar ...
tar把你的意圖理解為,在a.tar裡解出b.tar c.tar ...

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.