
と増加する数アーカイブ/圧縮ファイル形式は数多くありますが、それらすべてを管理する単一の無料/オープンソースのコマンドラインツールはありますか?おそらく、一貫性のある/統一されたフラグセットを備えたものはありますか?(私のフレンドリーなtarへの暗黙の参照)
かつて、バインディングやその他のユーティリティを使用してファイルの圧縮/解凍のタスクを大幅に簡素化することを目的としたエイリアスのセットに遭遇しましたtar
が、もうこれを見つけることができません。
アップデート:zip ファイル (どうやら 4GB を超えるファイルは処理できないようです) の抽出に をatool
使用せず、代わりに を使用する ように設定するにはどうすればよいですか?unzip
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 など。
ただし、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.ini
ext-uzip
u7z .zip
答え4
libアーカイブはマルチフォーマットアーカイブおよび圧縮ライブラリサポートする多くのアーカイブおよび圧縮形式。
bsdtar
および は、それぞれ のような APIbsdcpio
を備えたコマンドライン インターフェイスです。tar
cpio
したがって、これらのユーティリティのいずれかにすでに精通している場合は、習得するコマンド ライン インターフェイスが 1 つ少なくなります。
.iso
、、、、 ... ファイル.zip
を解凍するには、次のよう.cab
にします。.7z
.tar.gz.xz.bz2
bsdtar xf file.<ext>
tar xf file.tar
従来のコマンドと同じように行いますtar
。