納品用のZIPをサッと作れるシェルスクリプト(.DS_Store削除&除外つき)
※本ブログの目的は個人の備忘録であり、コードは参考用として掲載しています。
実際に使用される際は、ご自身の環境で十分に動作確認を行ってください。
コードの利用によって生じたいかなる問題についても責任を負いかねますので、あらかじめご了承ください。
はじめに
Web制作の納品で、ファイルをZIPでまとめることは常日頃あります。
でもそのたびに毎回 .DS_Store
を消したり、node_modules
を除外したりするのは地味に面倒です。
ということで、自分用に「納品ZIPをきれいに作ってくれるシェルスクリプト」をchatGPTに用意してもらいました。
シンプルなものですが、これが思った以上に便利なので備忘録として残しておきます。
やり方
スクリプトの内容
ファイル名は任意ですが、ここでは例として make-clean-zip.sh
とします。
#!/bin/bash
ARCHIVE_NAME=${1:-archive.zip} # ZIP名だけを引数で受け取る(なければ archive.zip)
echo "📁 対象ディレクトリ: $(pwd)"
echo "📦 出力ファイル名: $ARCHIVE_NAME"
# .DS_Store を削除
echo "🧹 .DS_Store を削除しています..."
find . -name ".DS_Store" -delete
# ZIPファイル作成(除外対象)
echo "📦 ZIPファイルを作成しています..."
zip -r "$ARCHIVE_NAME" . \
-x "node_modules/*" "**/node_modules/*" \
".git/*" "**/.git/*" \
"**/.DS_Store"
echo "✅ 完了しました!"
使い方
基本的な使い方は以下のとおり。
./make-clean-zip.sh myproject.zip
- 引数:出力するzipファイル名(省略すると
archive.zip
)
これでカレントディレクトリの.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の中身を確認する
作ったzipに何が入っているか確認するコマンドが便利です。
unzip -l archive.zip
unzip
… ZIPファイルを扱うコマンド-l
(list)… 展開せずに中のファイル一覧だけ表示archive.zip
… 対象のZIPファイル