Comment exécuter une action de dossier ou un autre script d'Automator lorsque j'apporte des modifications à un dossier ? Et par modifications, je n'entends pas seulement la suppression ou l'insertion d'un nouveau fichier, le plus important pour moi est que lorsque le contenu d'un fichier est modifié, l'action sera déclenchée.
Réponses
Trop de publicités?En utilisant launchd, vous pouvez enregistrer une liste de propriétés comme celle-ci dans ~/Library/LaunchAgents/ et la charger avec quelque chose comme launchctl load ~/Library/LaunchAgents/automator_test.plist
ou en se déconnectant et en se reconnectant.
<?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>automator_test</string>
<key>ProgramArguments</key>
<array>
<string>automator</string>
<string>/Users/username/Desktop/Test.workflow</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/username/Desktop/</string>
</array>
<key>StartInterval</key>
<integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>
Launchd ne détecte les modifications apportées aux fichiers que lorsqu'ils sont enregistrés de manière atomique (ou supprimés et recréés à chaque fois qu'ils sont enregistrés). La plupart des applications OS X effectuent des sauvegardes atomiques, mais par exemple TextMate et vim ne le font pas.
Ce type d'exigence va au-delà de la simple fsevents
exposés en tant qu'actions de dossier. Je vous recommande d'utiliser l'outil de Paul Kim Hazel qui vous permettra de créer des règles de "surveillance et de réaction" d'une granularité et d'une complexité presque illimitées.