Automator でフォルダアクションを作成することで可能です。
ただし Automator の既存のアクションを組み合わせただけで作成すると、
フォルダにファイルを追加→ファイル名が変更される→新しいファイルが追加されたと認識される→ファイル名が変更される→新しいファイルが追加されたと認識される→…
と永遠にリネームし続ける事が判明…。
仕方ないので、Automator らしさには欠けますが、スクリプト言語を使ってすべてを行い、フォルダ名が付加された後は条件判断を使って処理の繰り返しから逃げるようにします。
使用するスクリプト言語は AppleScript やシェルスクリプト、JavaScript、Ruby などから自由に選ぶことができますが、ここでは Python を使用しました。
① Automator を起動します。
② ファイル選択ウインドウで、「新規書類」をクリックします。もしくはメニューバーから「ファイル」>「新規」を選択します。
③ 書類の種類に「フォルダアクション」を選択して、「選択」をクリックします。
④「”フォルダアクション”は、次の場所に追加されたファイルやフォルダを受け取る」の「フォルダを選択」ポップアップメニューから「その他...」を選択し、フォルダアクションを設定したいフォルダを選択して、「選択」をクリックします。
⑤ アクションの「ライブラリ」から「ユーティリティ」を選択し、表示されたアクションの中から「シェルスクリプトを実行」をダブルクリックします。もしくは右側のワークフロー欄にドラッグ&ドロップします。
⑥「シェル」ポップアップメニューから、「/usr/bin/python」を選択します。「入力の引き渡し方法」ポップアップメニューから、「引数として」を選択します。
⑦ コマンドフィールドに入力されている Python スクリプトを、次のスクリプトに置き換えます。
Python
1import os
2import sys
3
4for f in sys.argv[1:]:
5 delimiter = "_"
6 file_name = os.path.basename(f)
7 file_path = os.path.dirname(f)
8 dir_name = os.path.basename(os.path.dirname(f))
9 if not file_name.startswith(dir_name + delimiter):
10 new_file_name = dir_name + delimiter + file_name
11 new_file_path = os.path.join(file_path, new_file_name)
12 os.rename(f, new_file_path)
⑧ メニューバーから「ファイル」>「保存...」を選択し、適当な名前を入力して「保存」をクリックします。
⑨ Automator を終了します。
実際に意図する動作をするか試してみて、意図した動作をしない場合はコメントで教えてください。