2012年9月22日土曜日

ターミナルから無圧縮ZIPファイルを作る

少し前の記事で、Automatorでシェルスクリプトを実行するという内容の記事がありましたが、無圧縮ZIPファイルをどのようなコマンドで作っているか書いていませんでした。その記事へのアクセスが結構多いようですので、実際にZIPファイルを作っている部分を書いてみます。エラーチェック等は省略して、肝心の部分は以下のような感じになっています。

zip -r -n ".jpg:.JPG:.jpeg:.JPEG:.gif:.GIF" "$zipf" "$zipd" -x ".DS_Store"

-r オプションは、ZIPの入力ファイルにディレクトリがある場合、再帰的にたどっていくことを指示します。
-n オプションは、引数として与えられた拡張子を持つファイルを、圧縮しないように指示します。tiffやpngも入れてもいいかもしれません。大文字小文字の違いを無視できればよいのですが、ちょっと冗長になっています。私は、テキストファイルなどは圧縮したいので、このオプションを使っています。
-nオプションの代わりに、-0オプションを使えばすべてのファイルが無圧縮になります。-# (#は0から9の数字が入ります)の形式のオプションは、圧縮スピードを相対的に指定するのですが、-0は無圧縮の指定になっています。-0の方が無圧縮ファイル作成の目的に合う人はこちらの方がよいと思います。
$zipfは、作成するZIPファイル名が入った変数です。
$zipdは、作成対象のディレクトリ名が入った変数です。両方共ダブルクォーテーションで囲んであるのは、文字列中にスペースがあるとシェルが別々の引数として処理するため、予防的に入れています。
最後の-xオプションは、ZIPの対象としないファイルを指定します。.DS_StoreはFinderが不可視ファイルとして作る場合がありますが、今回はZIPファイルに含める必要はないため除外するようにしています。

zipコマンドの詳細はターミナルからmanコマンドで調べることもできます。

0 件のコメント:

コメントを投稿