すべてのアーカイブ/圧縮形式を抽出できる単一の無料/オープンソースのコマンドライン ツールはありますか?

すべてのアーカイブ/圧縮形式を抽出できる単一の無料/オープンソースのコマンドライン ツールはありますか?

増加する数アーカイブ/圧縮ファイル形式は数多くありますが、それらすべてを管理する単一の無料/オープンソースのコマンドラインツールはありますか?おそらく、一貫性のある/統一されたフラグセットを備えたものはありますか?(私のフレンドリーなtarへの暗黙の参照

かつて、バインディングやその他のユーティリティを使用してファイルの圧縮/解凍のタスクを大幅に簡素化することを目的としたエイリアスのセットに遭遇しましたtarが、もうこれを見つけることができません。

アップデート:zip ファイル (どうやら 4GB を超えるファイルは処理できないようです) の抽出に をatool使用せず、代わりに を使用する ように設定するにはどうすればよいですか?unzipgunzip

$ 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 など。

ただし、atool は単にそれらのフロントエンドであるため、これらの圧縮ツールは依然として必要です。

特に、alsサポートされているアーカイブ形式の内容を一覧表示するコマンドが気に入っています。

メインatoolコマンドは、アーカイブの抽出に独自のフラグを使用します (適切なフラグを特定の基礎となる抽出ツールに渡します)。

ああ、それはいくつかのディストリビューションのリポジトリにあります (私の場合は Fedora ですが、思い出してみると、Ubuntu を使用していた当時はリポジトリにはありませんでした。私は tarball からインストールしました)。

リポジトリの更新: atool は次のディストリビューションのリポジトリにあります (現在のリリースのみチェック済み):

  • フェドーラ
  • Debian (@terdon に感謝。おそらく Ubuntu のような派生版も)
  • Ubuntu (qed、およびおそらくMintのような派生版)
  • オープンSUSE
  • CentOS (そしておそらく RHEL)
  • アーチリナックス

他にもあると思います...おそらく、最近のディストリビューションのほとんどです。

更新された質問に対する回答「atool のようなものを設定して、unzip を使用して zip ファイルを展開しないようにし、代わりに gunzip を使用するにはどうすればよいでしょうか」:

atool 設定ファイルを編集し~/.atoolrc、次の行を追加します。

path_unzip /usr/bin/gunzip

gunzip プログラムへの正しいパスを指定します。

この設定ファイルに入れることのできる変数の完全なリストについては、manページを参照してください。たくさんgunzip に必要なコマンドライン オプションが unzip と異なる場合は、atool ソース (perl) 自体を変更する必要がある場合があります。

答え2

以下は、いくつかのアーカイブ タイプを処理する小さなシェル関数です。

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 は、 のファイルを編集することで簡単に設定できる外部ヘルパーを使用します(残念ながら、avfs 1.0 では、 または ホーム ディレクトリの/usrファイルを使用する方法はないため、 のファイルを編集するか、再コンパイルする必要があります)。は、ファイルを処理するスクリプトです。を使用しない場合は、これを変更してください。 代わりに 7z を使用しても問題ない場合があります。 を編集して、行を に変更してください。/usr/local/usr/usr/share/avfs/extfs/ext-uzip.zip/usr/bin/unzip/usr/share/avfs/extfs/extfs.iniext-uzipu7z .zip

答え4

libアーカイブマルチフォーマットアーカイブおよび圧縮ライブラリサポートする多くのアーカイブおよび圧縮形式

bsdtarおよび は、それぞれ のような APIbsdcpioを備えたコマンドライン インターフェイスです。tarcpio

したがって、これらのユーティリティのいずれかにすでに精通している場合は、習得するコマンド ライン インターフェイスが 1 つ少なくなります。

.iso、、、、 ... ファイル.zipを解凍するには、次のよう.cabにします。.7z.tar.gz.xz.bz2

bsdtar xf file.<ext>

tar xf file.tar従来のコマンドと同じように行いますtar

関連情報