# [メタ情報] # 識別子: DAS棚田処理_指定フォルダへマージおよび空フォルダを削除_exe # 補足: # [/メタ情報] 要約: このテキストは、Macの「Automator」で利用できる2種類のワークフローについて説明しています。「空フォルダを削除.workflow」は、選択したフォルダ内のすべての空フォルダ(サブフォルダ含む)を削除するものです。実行前に確認ダイアログが表示され、まず`.DS_Store`などの隠しファイルやネットワーク由来の空の隠しフォルダを削除し、その後メインの空フォルダを深い階層から順に削除します。この操作は取り消せないため注意が必要です。 一方、「指定フォルダへマージ.workflow」は、選択したファイルやフォルダを、ユーザーが指定するマージ先の親フォルダへ統合・上書きする機能を提供します。マージ先はダイアログで選択し、`rsync -aE`コマンドを使用して、ディレクトリ階層やMac特有の拡張属性を保持したままコピーを実行します。必要に応じて元のファイルを移動(削除)するオプションも利用可能です。いずれのワークフローも処理完了時に通知が表示されます。 Automator 空フォルダを削除.workflow ワークフローが受け取る項目:フォルダ 検索対象:Finder.app シェルスクリプトを実行 引数として ``` # 1. 開始の確認ダイアログ osascript -e 'display dialog "選択したフォルダ内の空フォルダ(サブフォルダ含む)をすべて削除しますか?\n※この操作は取り消せません。" buttons {"キャンセル", "OK"} default button "OK" cancel button "キャンセル" with title "開始確認" with icon caution' || exit 0 # 2. 実際の削除処理 for f in "$@" do # 隠しファイル(.DS_Store, .localized, ._* など)を先に削除 find "$f" -mindepth 1 -type f \( -name ".DS_Store" -o -name ".localized" -o -name "._*" \) -delete # ネットワーク由来の空の隠しフォルダ(.AppleDouble)があれば削除 find "$f" -mindepth 1 -type d -name ".AppleDouble" -empty -delete # メインの空フォルダを深い階層から順に削除 find "$f" -mindepth 1 -type d -empty -delete done # 3. 終了の通知ダイアログ osascript -e 'display dialog "空フォルダの削除処理が完了しました!" buttons {"OK"} default button "OK" with title "処理完了" with icon note' ``` Automator 指定フォルダへマージ.workflow ワークフローが受け取り項目:ファイルまたはフォルダ 検索対象:Finder.app シェルスクリプトを実行 引数として ``` # ========================================== # 1. フォルダ選択ダイアログを表示してマージ先を決定 # ========================================== DEST_DIR=$(osascript -e ' try set dest_folder to POSIX path of (choose folder with prompt "マージ先の親フォルダを選択してください:") return dest_folder on error return "" end try ') # ユーザーがキャンセルした場合は終了 if [ -z "$DEST_DIR" ]; then exit 0 fi # ========================================== # 2. マージ・上書き処理 # ========================================== for item in "$@"; do # rsyncでマージ実行(一時ファイルの警告などはエラー画面に出さないよう微調整) rsync -aE "$item" "$DEST_DIR" 2>/dev/null done # ========================================== # 3. 完了の通知(タイムアウトを防止し、OKを押すまで無限に待つ) # ========================================== # with timeout of 86400 seconds = 24時間待機する設定 osascript <