您好,登錄后才能下訂單哦!
這篇文章給大家介紹Linux Deepin怎么同時解壓多個taball壓縮檔案,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
如何在 Linux Deepin 的命令行上同時解壓多個 tarball 文件?在介紹之前,我們先來舉一個例子。假設(shè)我們在當前目錄下有如下幾個壓縮檔案:
$ ls backup1.tar backup2.tar backup3.tar |
我們需要一起把它們?nèi)拷鈮?,該如何做呢?/p>
我們先來簡要講解一下 tar 的用法。tar 命令原用于從磁帶設(shè)備讀寫文件(tar 即是 Tape ARchiver 的縮略)。我們只能指定要放入壓縮檔案或要解壓出的文件名(如 tar x myfineonthe.tape)。可以使用 -f 選項可以告訴 tar 該檔案不是在某個磁帶上而是在文件中。該選項只接受一個參數(shù)——壓縮檔案的文件名。所有其它(后面的)參數(shù)都被看作上面提到的壓縮文件的一部分。
tar -x -f backup.tar myfile.txt # 或者使用下面更常見的句法 tar xf backup.tar myfile.txt |
現(xiàn)在回到我們之前的問題上來:同時解壓當前目錄下面的 backup1.tar backup2.tar backup3.tar 三個文件??赡軙信笥岩褂?tar xf *.tar,我們來看看其執(zhí)行結(jié)果:
$ tar xf *.tar tar: backup2.tar: Not found in archive tar: backup3.tar: Not found in archive tar: Exiting with failure status due to previous errors |
這是怎么回事?Shell 通過匹配文件名將 *.tar 替換,上面的一行實際等同于:
tar xf backup1.tar backup2.tar backup3.tar |
從我們之前對于 tar 的用法解釋中可知,我們在這里使用的命令的含義為“從壓縮檔案 backup1.tar 中解壓出 backup2.tar 和 backup3.tar”。只有在 backup1.tar 這個壓縮檔案中有相應(yīng)的文件名,才能執(zhí)行成功。
解決辦法很簡單:從壓縮檔案中將文件一一解壓即可。因為我們使用的是一個 UNIX shell (Bash),可以用循環(huán)來實現(xiàn):
for tarname in *.tar; do tar xf "$tarname" done |
下面說一下循環(huán)和 for-循環(huán)兩個基本概念。循環(huán)是用來在滿足某個條件之前重復(fù)其內(nèi)部的代碼的一種結(jié)構(gòu)。滿足該條件時循環(huán)即停止,其外部的代碼會繼續(xù)執(zhí)行。for-循環(huán)是將一變量逐次設(shè)置為一個列表中的各個值,并重復(fù)直到該列表用完的一類循環(huán)結(jié)構(gòu)。
在這里,for-循環(huán)會將匹配 *.tar 的文件名作為參數(shù)反復(fù)調(diào)用執(zhí)行 tar xf。這樣我們就將壓縮檔案逐一“自動地”解壓出來。
還有另一種很常見的檔案格式是 ZIP。解壓 ZIP 文件的命令是 unzip。這里也有同樣的問題:unzip 只接受一個選項來指定 ZIP 文件。所以可以用同樣的方法來解決:
for zipfile in *.zip; do unzip "$zipfile" done |
對于 unzip 命令還有另一種做法:它可以讀入類似 shell 的樣式(pattern)來指定 ZIP 文件名。為防止 shell 對于這些樣式的解釋,需要使用引號。unzip(而非 shell)在這里會解釋 *.zip:
unzip "*.zip" # 還可以用下面這種看起來更明晰的做法: unzip \*.zip |
關(guān)于Linux Deepin怎么同時解壓多個taball壓縮檔案就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。