WatchPaths
no parece ser capaz de vigilar un sub-directorio de forma recursiva, así que lo mejor que puedes hacer con él es vigilar las actividades de un solo directorio. Puede que quieras echar un vistazo a las Acciones de Carpeta, que se discuten en detalle en esta entrada del blog titulada: Configurar las acciones de las carpetas de OS X para saber cuándo se añade un archivo también.
Otra alternativa es utilizar una herramienta CLI que está disponible en Homebrew a través del brew install fswatch
comando. fswatch
es una implementación multiplataforma que funciona en la mayoría de los sabores de *NIX, incluido MacOS.
El monitor FSEvents, disponible sólo en OS X, no tiene limitaciones conocidas limitaciones, y se adapta muy bien al número de archivos que se observados.
Ejemplo
Aquí he creado un subdirectorio llamado ~/somedir
. A continuación, invoqué `fswatch contra este directorio:
$ mkdir ~/somedir
$ fswatch /some/dir
Ahora si empezamos a añadir archivos y subdirectorios fswatch
lo notificará:
$ touch ~/somedir/afile
fwatch msg>> /Users/joeuser/somedir/afile
$ mkdir ~/somedir/anotherdir
fswatch msg>> /Users/joeuser/somedir/anotherdir
$ touch ~/somedir/anotherdir/afile
fswatch msg>> /Users/joeuser/somedir/anotherdir/afile
Lo anterior puede ser adaptado para su uso en un shell script que puede tomar cualquier otra acción que usted requiera cuando se detecta cualquier cambio contra el árbol de directorios que fswatch
es la supervisión.
Otros ejemplos
Para actuar sobre la actividad del sistema de archivos puede utilizar uno de estos 2 patrones:
$ fswatch -0 path | while read -d "" event \
do \
// do something with ${event}
done
O esto:
$ fswatch -o path | xargs -n1 -I{} program
Referencias