増加する数 =アーカイブ/圧縮ファイル形式の場合、それらすべてを支配する単一のフリー/オープンソースのコマンドラインツールはありますか?おそらく、一貫性のある/統一されたフラグのセットを持つ何か? (私のフレンドリーなメモ tarへの暗黙の参照 )
tar
や他のユーティリティへのバインディングを使用してファイルを圧縮/解凍するタスクを大幅に簡略化することを目的とした一連のエイリアスに出くわしましたが、これはもう見つかりません。
更新:atool
のようにunzip
を使用してZipファイルを抽出しないようにするにはどうすればよいですか(これは明らかにt 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
atool を使用します。それは仕事をします。すべてではありませんが、多くのフォーマットで機能します。
tar、gzip、bzip2、bzip、lzip、lzop、lzma、Zip、rar、lha、arj、arc、p7Zipなど.
これらの圧縮ツールは依然として必要ですが、atoolは単にそれらのフロントエンドです。
特に、サポートされているアーカイブ形式の内容を一覧表示するals
コマンドが気に入っています。
メインのatool
コマンドは、独自のフラグを使用してアーカイブを抽出します(適切なフラグを特定の基本的な抽出ツールに渡します)。
ああ、それはいくつかのディストリビューションのリポジトリにあります(私の場合はFedoraですが、私が覚えているように、Ubuntuを使用したときは、そのリポジトリにはありませんでした。ターボールからインストールしました)。
リポジトリの更新:atoolは次のディストリビューションのリポジトリにあります(現在のリリースは確認済みのみ):
他にもあると思います...もっとも最近のディストリビューション。
更新された質問に対する回答「atoolのようなものを設定して、unzipを使用せずにZipファイルを抽出して...代わりにgunzipを使用するにはどうすればよいですか」:
Atool設定ファイルを編集します~/.atoolrc
を追加して次の行を追加します。
path_unzip /usr/bin/gunzip
あなたのgunzipプログラムへの正しいパスで。
この構成ファイルに入れることができる変数の完全なリストについては、manページを参照してください。変数にはたくさんあります。 gunzipに必要なコマンドラインオプションがunzipと異なる場合は、atoolソース(Perl)自体を変更する必要がある場合があります。
いくつかのアーカイブタイプを処理する小さなシェル関数を次に示します。
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
アーカイブを抽出しました。
[〜#〜] avfs [〜#〜] ファイルシステムは、すべてのアーカイブファイル(例:_/path/to/foo.Zip
_)がディレクトリ(_~/.avfs/path/to/foo/Zip#
_ forこの例)。 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-uzip
_の行を_u7z .Zip
_に変更してください。