是否有一個免費/開源命令列工具來提取所有存檔/壓縮格式?

是否有一個免費/開源命令列工具來提取所有存檔/壓縮格式?

數量不斷增加歸檔/壓縮檔案格式,是否有一個免費/開源命令列工具來統治它們?也許有一組一致/統一的標誌? (注意我的友好對 tar 的隱性引用

我曾經遇到過一組別名,旨在很大程度上簡化綁定到tar其他實用程式的壓縮/解壓縮檔案的任務,但我再也找不到它了。

更新: 我如何配置類似atool不用於unzip提取 zip 檔案(顯然無法處理大於 4GB 的檔案)並使用它gunzip

$ aunpack large_file.zip
error:  Zip file too big (greater than 4294959102 bytes)
Archive:  large_file.zip
warning [large_file.zip]:  1491344848 extra bytes at beginning or within zipfile
  (attempting to process anyway)
error [large_file.zip]:  start of central directory not found;
  zipfile corrupt.
  (please check that you have transferred or created the zipfile in the
  appropriate BINARY mode and that you have compiled UnZip properly)
aunpack: unzip ...: non-zero return-code

答案1

我用一個工具。它完成了這項工作。它適用於許多(但不是全部)格式:

tar、gzip、bzip2、bzip、lzip、lzop、lzma、zip、rar、lha、arj、arc、p7zip 等。

這些壓縮工具仍然是需要的,儘管工具只是它們的前端。

我特別喜歡als它提供的命令,它列出了任何支援的存檔格式的內容。

atool命令使用自己的標誌來提取檔案(將適當的標誌傳遞給特定的底層提取工具)。

哦,它在一些發行版的存儲庫中(在我的例子中是 Fedora,不過我記得,當我使用 Ubuntu 時,它並不在他們的存儲庫中。我是從 tarball 安裝的。)。

儲存庫更新:atool 位於以下發行版的儲存庫中(僅檢查目前版本):

  • 軟呢帽
  • Debian(感謝@terdon,並且大概是像 Ubuntu 這樣的衍生品)
  • Ubuntu(qed,大概還有像 Mint 這樣的衍生性商品)
  • 打開蘇塞
  • CentOS(大概還有 RHEL)
  • 架構Linux

我確信還有其他的......似乎是最現代的發行版。

更新問題的答案“我如何配置像 atool 這樣的東西不使用 unzip 來提取 zip 文件......並使用gunzip 代替”:

編輯 atool 設定檔~/.atoolrc並新增以下行:

path_unzip /usr/bin/gunzip

以及gunzip程式的正確路徑。

有關可以放入此設定檔中的可能變數的完整列表,請參閱手冊頁,其中有很多。如果gunzip 所需的命令列選項與unzip 不同,您可能必須修改atool 原始碼(perl) 本身。

答案2

這是一個處理多種存檔類型的 shell 小函數。

extract () {
    if [ ! -f "$1" ] ; then
        echo "'$1' does not exist."
        return 1
    fi

    case "$1" in
        *.tar.bz2)   tar xvjf "$1"   ;;
        *.tar.xz)    tar xvJf "$1"   ;;
        *.tar.gz)    tar xvzf "$1"   ;;
        *.bz2)       bunzip2 "$1"    ;;
        *.rar)       rar x "$1"      ;;
        *.gz)        gunzip "$1"     ;;
        *.tar)       tar xvf "$1"    ;;
        *.tbz2)      tar xvjf "$1"   ;;
        *.tgz)       tar xvzf "$1"   ;;
        *.zip)       unzip "$1"      ;;
        *.Z)         uncompress "$1" ;;
        *.xz)        xz -d "$1"      ;;
        *.7z)        7z x "$1"       ;;
        *.a)         ar x "$1"       ;;
        *)           echo "Unable to extract '$1'." ;;
    esac
}

我找到了原版在網路上某處引用了這個函數,並對它進行了一些修改以提取ar檔案和 xz 壓縮tar檔案。

答案3

AVFS檔案系統提供了檔案系統的視圖,其中每個存檔檔案(例如/path/to/foo.zip)都可以作為目錄進行存取(~/.avfs/path/to/foo/zip#對於本範例)。 AVFS 提供對最常見存檔檔案格式的唯讀存取。

mountavfs
cp -Rp ~/.avfs$PWD/large_file.zip\# extraction_directory

Avfs 使用外部助手,可以透過編輯文件輕鬆配置/usr(不幸的是,從 avfs 1.0 開始,無法使用/usr/local主目錄中的文件,您需要編輯文件/usr或重新編譯)。/usr/share/avfs/extfs/ext-uzip是處理文件的腳本.zip,如果不想使用請更改它/usr/bin/unzip。您也許可以改用 7z:嘗試編輯/usr/share/avfs/extfs/extfs.ini並將該行更改ext-uzipu7z .zip.

答案4

自由檔案庫是一個多格式存檔和壓縮庫支援許多存檔和壓縮格式

bsdtar和分別是帶有-like a -like APIbsdcpio的命令列介面。tarcpio

因此,如果您已經熟悉這些實用程式中的任何一個,那麼就不需要學習一個命令列介面。

要解壓縮您的.iso, .zip, .cab, .7z....tar.gz.xz.bz2文件,只需:

bsdtar xf file.<ext>

tar xf file.tar就像使用傳統命令一樣tar

相關內容