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と入力して起動します。

  • 起動したら、新規を選びます。

    f:id:aoki1210:20200831113053p:plain
    新規

  • クイックアクションを選択します。

    f:id:aoki1210:20200831113121p:plain
    クイックアクション

  • 左から2番めの枠で「選択されたFinder項目を取得」を選択して、右の枠にドラッグします。

    f:id:aoki1210:20200831113301p:plain
    選択されたFinder項目を取得

  • 同様に、左から2番めの枠で「シェルスクリプトを実行」を選択して、右の枠にドラッグします。(1つ前の手順で貼り付けた「選択されたFinder項目を取得」の下に入れます)

    f:id:aoki1210:20200831113430p:plain
    シェルスクリプトを実行

  • シェルスクリプトを実行」の部分で下記のように入力します。

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でフォルダを右クリックして、先程つけた名前のメニュー(ここでは「フォルダ圧縮」)をクリックします。

    f:id:aoki1210:20200831114632p:plain
    フォルダ圧縮
    フォルダと同じ階層に、「フォルダ名.zip」というファイルが生成されることを確認できます。

補足

このスクリプトは1つのフォルダを選択した時にのみしか対応していません。ファイルや複数フォルダを選んで実行しても動きません。 (失敗した場合は、アクティビティモニタで、Zipコマンドが暴走していたないか見てほうが良いかもしれません)

参考

www.it-swarm.dev

gotohayato.com