How to execute a Folder Action or another Automator script when I make changes to a folder

automatorfolder-action

How to execute a Folder Action or another Automator script when I make changes to a folder?
And by changes I mean not just deleting or inserting new file, the most important for me is when the content of a file is changed the action will be triggered.

Best Answer

Using launchd, you could save a property list like this in ~/Library/LaunchAgents/ and load it with something like launchctl load ~/Library/LaunchAgents/automator_test.plist or by logging out and back in.

<?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>automator_test</string>
    <key>ProgramArguments</key>
    <array>     
        <string>automator</string>
        <string>/Users/username/Desktop/Test.workflow</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Users/username/Desktop/</string>
    </array>
    <key>StartInterval</key>
    <integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>

Launchd only detects changes to files when they are saved atomically (or deleted and recreated every time they are saved). Most OS X apps perform atomic saves, but for example TextMate and vim don't.