web-dev-qa-db-ja.com

コマンドラインアーカイブマネージャー/エクストラクター

すべての圧縮形式に対応するすべての抽出コマンドを忘れてしまいます。

そのため、ファイル拡張子を適切な抽出コマンドにマップするだけのスクリプトを書くことを考えていました。しかし、私はこのようなものがすでに存在すると思います、私はそれを見つけることができません。

ファイルローラーのようなものに満足しますが、ファイルローラーはGUIツールです。

15
brillout

いくつかの提案:

unp

unp(software-centerから入手可能)は、さまざまなアーカイブを現在のフォルダーに解凍する小さなPerlモジュールです。サポートするアーカイブ形式にはunp -sを使用します

デフォルトでは、アーカイブを現在のフォルダーに解凍します。

ファイルローラー

ファイルローラー自体は、コマンドラインから実行できます。 file-roller -h <archive name>を使用して、アーカイブを解凍します。

11
fossfreedom

here から、.bashrcに追加します。

extract () {
   if [ -f $1 ] ; then
      case $1 in
         *.tar.bz2)   tar xjf $1      ;;
         *.tar.gz)   tar xzf $1      ;;
         *.bz2)      bunzip2 $1      ;;
         *.rar)      rar x $1      ;;
         *.gz)      gunzip $1      ;;
         *.tar)      tar xf $1      ;;
         *.tbz2)      tar xjf $1      ;;
         *.tgz)      tar xzf $1      ;;
         *.Zip)      unzip $1      ;;
         *.Z)      uncompress $1   ;;
         *)         echo "'$1' cannot be extracted via extract()" ;;
      esac
   else
      echo "'$1' is not a valid file"
   fi
} 
11
frabjous

まだ言及されていないのは、コマンドラインユーティリティのswiss-army-knifeです:atool;リポジトリで利用可能です: atoolInstall atool またはSudo apt-get install atoolを実行します。

atoolは、実際には script で、aunpack、apack、als、acat、adiff、arepackなどのさまざまな関数で構成されています。おそらく、このプログラムの最も一般的な使用法は、aunpackコマンドを使用してアーカイブを抽出することです。興味深い便利なオプションはかなりありますが、ほとんどのアーカイブを抽出する基本的な方法は、たとえば次のように実行することです

aunpack myarchive.tar

Tar、7z、Zip、jar、rar、ar、lha、およびその他の多くのアーカイブ形式とそれらのバリエーションのサポートは、端末にman atoolを入力するか、 オンラインのUbuntuマンページ

したがって、同じフォルダーにtar、Zip、およびgzアーカイブがある場合、それらをすべて抽出するために必要なことは、実行するだけです。

aunpack -e *

サポートされているすべてのアーカイブは、フォルダー構造が保持された状態で解凍されます。結果のフォルダの名前がす​​でに存在する場合、上書きされませんが、unpack-5645のような一意の名前が付けられます。

または、1種類のアーカイブのみを選択してすべてを解凍する場合は、代わりに

aunpack -e *.Zip

サブフォルダーのディレクトリ構造のみを保持して(存在する場合)、特定のディレクトリでファイルを直接解凍する必要がある場合は、たとえば次のように入力します。

aunpack -e Scripts11.Zip -X /home/mike/Videos

同じ名前のファイルが既に存在する場合、コマンドで強制オプション(-f)を指定していない限り、名前を変更するか上書きするアクションを求めるプロンプトが表示されます。

マンページに記載されているように、aunpackは最初に抽出します

ファイルを一意の(一時的な)ディレクトリに移動し、可能であればその内容をmov [es]します。これにより、ローカルファイルが誤って上書きされることも防止されます。


manページ で述べられているように、他のツールでは、他のアクションが可能です。

  • apackは、ファイルまたはフォルダー指定またはstdinからアーカイブを作成します
  • alsは、指定されたアーカイブ内のファイルをリストします
  • acatを使用すると、アーカイブファイルを標準出力に抽出できます。
  • adiffでは、指定した2つのアーカイブを比較できます
  • arepackは、元のアーカイブの内容を一時フォルダーに入れてから新しいアーカイブを再パックすることにより、あるアーカイブ形式を別のアーカイブ形式に変換できます。

すべてのユーティリティにはさらに多くの便利なオプションがありますが、おそらく最も使用頻度の高いものはaunpackになります。複数の異なるアーカイブを簡単に抽出できるからです。 1つのコマンドを発行するだけで、tar、Zipなどのさまざまなコマンドを使用せずに複数の異なるアーカイブ形式を抽出できることは素晴らしいことです。

Thunarなど、ファイルマネージャーのカスタムアクションにatool関数を統合する方法を説明した最新の記事については、 this online magazine を参照してください。

4
user76204

dtrxというツールがあります-適切な抽出を行います。

Ubuntuリポジトリからインストールし、dtrx somefile.someextを実行します。このツールは、ネストされたアーカイブ(ZipファイルのZip)についてユーザーに対話的にクエリします。

dtrxは frabjous's extract の洗練されたバージョンです。

3
Jan

どのようなフォーマットに対処する必要がありますか? 1つの方法は、引数の拡張子をチェックするシェルスクリプトを記述することです。または、.tar。*のバリエーションだけを扱う場合は、tar -xfを実行するだけで、それらのほとんどを自動的に処理できます。 (したがって、それとunzipだけを覚えています。これは、私が通常遭遇するすべてのものに十分です。)

0
Ben Kraft