Skip to content
Pure OSX file event watcher using launchd.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Fsev is a OSX file event watcher and command triggerer under 50 lines.


sudo curl -o /usr/local/bin/fsev
sudo chmod +x /usr/local/bin/fsev


$ fsev <command>

This will run the given command when a file change event occurs in the current directory or subdirectories. Ctrl-C to exit.


In a new directory:

$ fsev say something changed 
<open a new terminal tab>
$ mkdir -p test/dir/
$ touch test/dir/test.txt
$ rm -rf test/

How it works

It does so by creating a temporary plist xml file that use WatchPaths, and loads it using launchctl. Command given is also extended to have a log file at with same uuid under /tmp/. Upon quit, plist gets unloaded, and both files are deleted. While consequent changes don't pop immediately, it might need few more seconds to catch up.


While the terminal quit case is handled, in case current plist might remain loaded, you can unload it manually. First, find out /tmp/ log exists, remove it and make sure to unload plist by following command:

$ launchctl unload ~/Library/LaunchAgents/<id>.plist



You can’t perform that action at this time.