web-dev-qa-db-ja.com

すべてのサブフォルダーを監視するOSXでのフォルダーアクション

フォルダアクションを追加したいフォルダがあります。このアクションは、ファイルがトップレベルに追加されたときにうまく機能します。ただし、ファイルがサブフォルダーに追加されると、アクションは有効になりません。ファイルがそのサブフォルダーのいずれかに追加されたときにフォルダーアクションが有効になっていることを確認する方法はありますか?

8

launchd には watchpaths という機能があり、変更が発生したときに.shスクリプトなどを実行できます。

パスのセキュリティ要件に応じて、監視しようとしているのはいつか(ログインしているとき、または常に監視しているとき)。 plistを配置する場所を決定します。

 ~/Library/LaunchAgents         Per-user agents provided by the user.
 /Library/LaunchAgents          Per-user agents provided by the administrator.
 /Library/LaunchDaemons         System-wide daemons provided by the administrator.
 /System/Library/LaunchAgents   Per-user agents provided by Mac OS X.
 /System/Library/LaunchDaemons  System-wide daemons provided by Mac OS X.

例:~/Library/LaunchAgents/com.tellemewhen.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
    <string>com.tellemewhen.plist</string>
    <key>OnDemand</key>
    <true/>
    <key>Program</key>
    <string>/PATH/TO/YOURSCIPTTORUN.sh</string>
    <key>ProgramArguments</key>
    <array>
            <string></string>
    </array>
    <key>WatchPaths</key>
    <array>
            <string>/path/to/watch</string>
    </array>
    </dict>
</plist>

launchctl load ~/Library/LaunchAgents/com.tellemewhen.plistplistをロードします。

1
Dave Horner