fswatch
A trivial Ruby script for triggering a command on file system change in OS X.
Installation
The point was mainly to shove this into gemcutter so it's easy to deploy:
$ gem install fswatch
Usage
On file system change execute ls -l
:
$ fswatch ls -l
Watch a specific path:
$ fswatch -d / ls -l
Wait at least 5 seconds before refreshing using deferral:
$ fswatch -t5 ls -l
If the command is long running and you want to forcibly restart it on file system change:
$ fswatch -x ls -l
If you want to pass the paths which have changed as a parameter to the command:
$ fswatch -p echo
If you want to place the paths somewhere other than at the end, use the @fspaths
token:
$ fswatch -p "echo @fspaths | wc -l"
You can also use @fspathscolon
for colon-separated paths and @fspatchcomma
for comma-separated paths.
Examples
Automatically rsync on changes:
$ fswatch -t 5 "rsync -av . devbox:/devfolder-on-devbox/"