納品用のZIPをサッと作れるシェルスクリプト(.DS_Store削除&除外つき)
※本記事のコードは参考用です。使用前にご自身で動作確認をお願いします。
はじめに
Web制作の納品で、ファイルをZIPでまとめることは常日頃あります。
でもそのたびに毎回 .DS_Store
を消したり、node_modules
を除外したりするのは地味に面倒です。
ということで、自分用に「納品ZIPをきれいに作ってくれるシェルスクリプト」をchatGPTに用意してもらいました。
シンプルなものですが、これが思った以上に便利なので備忘録として残しておきます。
やり方
スクリプトの内容
ファイル名は何でもOKですが、ここでは例として make-clean-zip.sh
としておきます。
#!/bin/bash
TARGET_DIR=${1:-.} # 1つ目の引数がなければ"."(カレント)
ARCHIVE_NAME=${2:-archive.zip} # 2つ目の引数がなければ archive.zip
echo "📁 対象ディレクトリ: $TARGET_DIR"
echo "📦 出力ファイル名: $ARCHIVE_NAME"
# .DS_Store を削除
echo "🧹 .DS_Store を削除しています..."
find "$TARGET_DIR" -name ".DS_Store" -delete
# zipファイルを作成(.git や node_modules は除外)
echo "📦 ZIPファイルを作成しています..."
zip -r "$ARCHIVE_NAME" "$TARGET_DIR" -x "*.git*" "*/node_modules/*" "*/.DS_Store"
echo "✅ 完了しました!"
使い方
基本的な使い方は以下のとおり。
./make-clean-zip.sh ./myproject myproject.zip
- 第一引数:対象のディレクトリ(省略するとカレントディレクトリ)
- 第二引数:出力するzipファイル名(省略すると
archive.zip
)
これで ./myproject
を、.DS_Store
を削除しつつ .git
や node_modules
を除外して、myproject.zip
にまとめてくれます。
引数を省略すれば、現在のディレクトリを archive.zip
という名前でまとめてくれます。
PATHに登録してどこからでも使えるようにする(zshの場合)
このスクリプト、何度も使うなら「毎回パスを指定して実行する」のは面倒です。PATH
を通しておけば、どこにいても make-clean-zip.sh
で呼び出せて便利です。
以下、zshの例です。
1. スクリプト専用フォルダを作成
ホームディレクトリにscriptsフォルダを用意し、そこにmake-clean-zip.sh
を配置します。
2. 実行権限付与
chmod +x ~/scripts/make-clean-zip.sh
3. .zshrc
にPATHを追記
echo 'export PATH="$HOME/scripts:$PATH"' >> ~/.zshrc
4. 設定を反映
source ~/.zshrc
これで、どこにいても make-clean-zip.sh
と打てばスクリプトが実行できるようになります。
おまけ
作ったzipに何が入っているか確認するコマンドが便利です。
unzip -l archive.zip
unzip
… ZIPファイルを扱うコマンド-l
(list)… 展開せずに中のファイル一覧だけ表示archive.zip
… 対象のZIPファイル