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.
<?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">
launchctl load ~/Library/LaunchAgents/com.tellemewhen.plist loads the plist.