2016年4月16日土曜日

それ find で!! コマンド1つで、全圧縮形式を解凍する。混沌を求めて。unar unp

最強の解凍ツールを求めて。SJIS含むが気分的には除外したい。

簡単にいうと最強も何もあったもんじゃないんですが、シフトJISが撲滅されると楽ですね。


  • unp すべての形式へのフロントエンドスクリプト(展開にはスクリプト内部でunzipなどを使います)。一部書き換えてchcp932対応にするといい。
  • unar すべての形式を解凍する便利ツール。コードページを解する。賢い。間違えたことがあまりない。数回あるけれど。そういう場合は、unzip -Ocp932 *.zip。


※すべて=だいたい。

※bash

コンビニエンスなツール・unp unar の導入

sudo apt install unp unar
ふたつ入れときます。ファイルは小さい。

■RAR形式Zip形式

ふたつ以上のzip/rarがある場合です。一つしかない場合は*の扱いが変わるので。

ディレクトリのRAR形式のファイルを一括で解凍、展開する。unar。find は手抜き書式。
#一括なら次の2行覚えておけば、ほぼ全てに対応できます。
find *.rar -exec unar {} \;
find *.zip -exec unar {} \;  
同、unrar/unzip の場合 
find *.rar -exec unrar x {} \;

#WindowsでいまどきShiftJISなファイル名格納されたZIPは個別に扱う。

unzip -Ocp932 filename.zip

■多様な形式をひとつのコマンド、書式で。unpで楽勝。

unpの場合(拡張子を変えれば万能的に使えます。zipなどにも) 発見したんだが、*.*が気軽に使えるにのがこのスクリプトの便利さかも。混沌とするかもしれませんが。
unp *.zip
unp *.rar
unp *.* 

■つまり、最強の解凍ツールunpといってもいい、かも。そうでもないが。

(ただし、「コードページの憂鬱」のある日本語環境は除外。一行書き換えればいいです)


unp *.* 
find *.rar -exec unar {} \; 
find *.zip -exec unar {} \; 

まぁ、化けるアーカイブファイルがあったら、(だいたいWindowsのものだけど)、unzip -Ocp932 *.zip を個別にかけちゃえばいいわけです。個別にunarだとかなりいい線いきますね(間違える場合もある)。

まぁ、~/Downloadsで、*.*を発行すると混沌とするだけですよね。あはは。

■最終回答(私の結論)テキトーなのであまり信じないほうがいいかも。unpの日本語対応版を作る。


unp 227行目を
        [ "unzip" ]を [ "unar" ] に書き換える。unzipをunarです。

sudo gedit `which unp`

      [ "unzip", "zip|cbz|cbr|jar|war|ear|xpi|adf", "Zip.*archive", 0,
#      [ "unzip" ] 
      [ "unar" ]

書き換えた方を、unpjとして、保存しておくといいのかも。とはいえ、自分が使うとも思えないですね。使いませんね。


これで、ほぼ当社調べ99.9%(Shift_JIS含めて)日本語環境に対応した解凍環境ができました。
unarに頼り過ぎると、RARによってはうまくいかないので、unar万能というわけでもないのです。めんどくさいな。 rarもややこしいところがあります。たぶん、形式が違うのでunrarの種別に絡みますね。めんどくさい。

おまけ:unarにコードページを強制する:unar -e cp932

alias zipsjis="unar -e cp932" #codeページ強制 解凍

0 件のコメント:

コメントを投稿