コマンドラインからあらゆる種類のアーカイブファイルをすばやく抽出する方法


11

多くの場合、カンマドラインを使用して、さまざまな種類のアーカイブファイルを抽出する必要があります。しかし、どのタイプのファイルアーカイブでも、正確なコマンドを覚えているとは限りません。だから、私は時間を無駄にして、もう一度検索しなければなりません。どうすればこれを回避できますか?


1
atool複数の形式を抽出/パックできるも参照してください。この質問に対して私が出した答えを参照してください:command-line-archive-manager-extracter。この質問もその質問の複製なので、おそらくそれらをマージする必要があります。

回答:


15

dtrxコマンドは、その問題に関するあなたの友達です。

タイプを推測することにより、アーカイブファイルを解凍します。また、解凍したファイルが新しいディレクトリに配置されることも確認します。現在の作業ディレクトリが大量のファイルで混乱しないようにします。

インストール

sudo aptitude install dtrx

使用法

dtrx stuff.zip

11

次のシェルスクリプトを使用できます(名前を付けてextractに入れました~/bin)。

#!/ bin / bash

if [$#-lt 1];その後
  echo "使用法:` basename $ 0` FILES "
  1番出口
fi

#私は、次の関数見つかっhttps://unix.stackexchange.com/a/168/37944私はそれを少し改善しました。このアイデアをsydoに感謝します。
抽出(){
    $ @の引数用; 行う
        if [-f $ arg]; その後
            $ argのケース
                * .tar.bz2)tar xjf $ arg ;;
                * .tar.gz)tar xzf $ arg ;;
                * .bz2)bunzip2 $ arg ;;
                * .gz)gunzip $ arg ;;
                * .tar)tar xf $ arg ;;
                * .tbz2)tar xjf $ arg ;;
                * .tgz)tar xzf $ arg ;;
                * .zip)$ argを解凍します;;
                * .Z)$ arg ;;
                * .rar)rar x $ arg ;; # 'rar'をインストールする必要があります
                * .jar)jar -xvf $ arg ;; # 'jdk'をインストールする必要があります
                *)echo "'$ arg'はextract()で抽出できません" ;;
            esac
        そうしないと
            echo「 '$ arg'は有効なファイルではありません」
        fi
    終わった
}

$ @を抽出

スクリプトを実行可能にすることを忘れないでください:

chmod +x ~/bin/extract

使用法:

file_1 file_2 ... file_nを抽出します 

良いですね。zipが現在のディレクトリに抽出されることがありますが、必要な場合は独自のサブディレクトリになります。unzip -dを使用basename $argすると役立つ場合があります。
生産者
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.