[Linux] 從 tgz (tar.gz) 檔中排除掉特定檔案,建立新的 tgz 檔案
今天接到一個 repack 的任務,
要把一個 tgz (tar.gz) 壓縮檔裡的其中一個檔案刪除掉,
例如下面 build.tgz 中的 extra/setting_mac.zip:
testuser@localhost ~ $ tar -tf build.tgz extra/ extra/setting.zip extra/setting_mac.zip extra/setting_linux.zip test.bat
以前的話,我大概就只能用 tar xvf 先把 tgz 解開,
刪掉不要的檔案,再用 tar zcvf 壓回來,
不過那樣實在有點繁瑣…
在查 tar 的時候,意外的發現原來 tar 支援一種語法,
就是用 @ 指名某個 tar 檔,可以把這 tar 檔的內容當作來源使用,
再搭配 –exclude 參數,就可以直接建出一個排除掉特定檔案的 tgz 了。
舉例來說,下面的範例是將 build.tgz 的內容,
排除掉 extra/setting_mac.zip 後,壓縮成 build_new.tgz:
testuser@localhost ~ $ tar zcvf build_new.tgz --exclude=extra/setting_mac.zip @build.tgz a extra/ a extra/setting.zip a extra/setting_linux.zip a test.bat
只要一行就搞定了,真的是很不錯的功能耶~^^
參考資料:gzip – How do I delete a single file from a tar.gz archive – Stack Overflow
(本頁面已被瀏覽過 888 次)