MacのFinderで「.git」や「.DS_Store」無しのZip圧縮
目的
MacのFinderで作業しているときに、zip圧縮を行う時があります。
標準の右クリックメニュー「(フォルダ名)を圧縮」は便利なのですが、中に含まれる管理用の.gitや.DS_Storeとかも圧縮され、相手がWindowsだったり開発者ではない場合に、ゴミが入っているように見えてしまいます。
対策
zipコマンドで、-xという除外オプションをつければ良いのですが、つい忘れてしまう上、手間なので、Automatorという自動化ツールで簡単なスクリプトを登録して、zipコマンドを叩く手間を減らします。 これにより、Finderの右クリックメニューから、.DS_Store、.git、.svn 、.idea 、__MACOSXといった管理ファイル無しで、Zip圧縮できるようになります。
手順
Automator 起動 spootlight(右上メニューの検索ボタン)の検索窓で、automatorと入力して起動します。
起動したら、新規を選びます。
新規 クイックアクションを選択します。
クイックアクション 左から2番めの枠で「選択されたFinder項目を取得」を選択して、右の枠にドラッグします。
選択されたFinder項目を取得 同様に、左から2番めの枠で「シェルスクリプトを実行」を選択して、右の枠にドラッグします。(1つ前の手順で貼り付けた「選択されたFinder項目を取得」の下に入れます)
シェルスクリプトを実行 「シェルスクリプトを実行」の部分で下記のように入力します。
name=("$@") if [ -d $name ];then cd "$name" zipFileName=`basename "$name"` Zip "${zipFileName}.Zip" -r ./* \ -x */.DS_Store \ -x */.git \ -x */.svn \ -x */.idea \ -X */__MACOSX mv "${zipFileName}.zip" ../ fi
保存します。 「フォルダ圧縮」とか適当な名前をつけます。
確認します。 Finderでフォルダを右クリックして、先程つけた名前のメニュー(ここでは「フォルダ圧縮」)をクリックします。
フォルダと同じ階層に、「フォルダ名.zip」というファイルが生成されることを確認できます。フォルダ圧縮
補足
このスクリプトは1つのフォルダを選択した時にのみしか対応していません。ファイルや複数フォルダを選んで実行しても動きません。 (失敗した場合は、アクティビティモニタで、Zipコマンドが暴走していたないか見てほうが良いかもしれません)