I have a folder that I would like to add a folder action to. The action works great when the file is added to the top level. But when a file is added to and sub-folders, the action is not enabled. Is there a way to ensure that a folder action is enabled when a file is added to any of its subfolders?
-
2Folder actions are not recursive . You might have better luck with a utility like Hazel, which hooks into the same events notification interface.– kopischkeJul 21, 2012 at 18:19
-
That makes folder actions essentially useless. Should have known.– AskdesignersJul 14, 2023 at 22:44
Add a comment
|
1 Answer
launchd has a feature called watchpaths which can run a .sh script or whatever you please when changes occur.
depending on the security requirements of paths are you are looking to monitor and when you'd like it monitored (when logged in or always?); determines where you place the 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.
Example: ~/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.plist
loads the plist.
-
-
> Links broken to watchpaths. Did you actually expect Apple to maintain something for developers? Jul 15, 2023 at 12:23