Blog

2025.02.14[FRI]

日付指定可能な差分納品データ抽出方法(Mac)

非常に便利だったので共有です。

 

納品時の差分データ抽出として、SCONE Diffをつかっていたのですが、mac osのsonomaから使えなくなっていたようで、MacのAutomatorで自動で抽出するコマンドを作りました。

 

#!/bin/bash

# ---------- 1. クイックアクション実行フォルダを取得 ----------
SOURCE="$1"  # クイックアクションを実行したフォルダ
SOURCE=${SOURCE//:/\/}  # パス変換(macOSのAppleScript形式 → UNIX形式)

# ---------- 2. 差分抽出の日付を入力 ----------
DATE=$(osascript -e 'tell application "System Events" to display dialog "差分を取得する日付を入力(YYYY-MM-DD)" default answer ""' -e 'text returned of result')

# ---------- 3. 書き出し先フォルダを選択(フルパスに変換) ----------
DEST=$(osascript -e 'tell application "Finder" to choose folder with prompt "書き出し先のフォルダを選択してください"' -e 'POSIX path of result')

# ---------- 4. フォルダがなければ作成 ----------
mkdir -p "$DEST"

# ---------- 5. rsyncで差分データをコピー(フォルダ構造を維持) ----------
rsync -av --include="*/" --include="*" --exclude=".*" --prune-empty-dirs --relative \
    --files-from=<(find "$SOURCE" -type f -newermt "$DATE" | sed "s|$SOURCE/||") \
    "$SOURCE/" "$DEST/"

# ---------- 6. Finderで書き出しフォルダを開く ----------
open "$DEST"

 

登録方法としては、

1. Automatorを開く

2. クイックアクションを開く

3. シェルスクリプトを実行を追加

4. ワークフローが受け取る現在の項目→フォルダ

5. 上記コードを貼り付け。

6. 「入力の渡し方」 → 「引数として渡す」に変更

7. シェルの種類 を "/bin/bash" に変更

8. 差分データ抽出などの名前で保存

 

操作方法としては、

検索対象のフォルダを右クリックでクイックアクションの中に保存したコマンドがあります。

それを実行すると日付と書き出し先を入力できるので実行。

ページトップへ