Existe-t-il un moyen de vérifier les modifications apportées à un dossier/fichier (y compris l'ajout de fichiers, la suppression de fichiers, les modifications dans les fichiers, ...). L'action "Dossier" dans Automator vérifie uniquement si des fichiers ont été ajoutés récemment.
Réponses
Trop de publicités?Vous pouvez ajouter une action "Exécuter Shell script" avec la commande :
find <directory> -newermm <reference_file>
Cela vous donnera tous les fichiers et répertoires à l'intérieur de <directory>
qui ont changé depuis la dernière modification de <reference_file>
. Assurez-vous simplement de modifier le <reference_file>
à chaque fois que vous exécutez le script d'Automator.
Jetez également un coup d'œil à la page du manuel de recherche (entrez man find
dans le terminal) pour plus d'options. Find est très puissant et affiner votre recherche est généralement une question de quelques options supplémentaires. Par exemple, pour rechercher uniquement les répertoires modifiés après le <reference_file>
:
find <directory> -type d -newermm <reference_file>
Si la version livrée avec OSX ne suffit pas, vous pouvez également essayer la version livrée avec findutils
(brew, macports etc) qui devrait avoir un peu plus de fonctionnalités.
Aux dernières nouvelles, Automater utilise Applescript en arrière-plan pour script vos actions. Applescript n'a pas beaucoup de profondeur. S'il peut obtenir la liste des fichiers d'un répertoire (et donc vous pourriez savoir quand quelque chose est supprimé), je ne crois pas qu'il puisse calculer les modifications apportées à un fichier.
Ce que vous devez vraiment exploiter, ce sont les notifications du système de fichiers. Et comme c'est une bête, je suivrais le conseil de Kraymer et utiliserais launchd. Il a des crochets pour exécuter chaque fois que le contenu d'un dossier est modifié. Lingon (voir aussi son Page SourceForge ) est une excellente application pour aider les gens à se lancer dans launchd. Vous pouvez écrire votre automator script/application pour faire tout ce que vous aviez prévu de faire lorsque votre répertoire a été modifié et juste avoir la tâche launchd appeler cela.
Vous pouvez vérifier à une de mes réponses précédentes mais on dirait que tu veux
fs_usage -f filesys
Launchd n'est pas la voie à suivre pour les changements de fichiers, fs_usage utilise la machine sous-jacente qui alimente Spotlight.
EDIT : Je me trompe complètement ici. Launchd a exactement cette fonctionnalité requise, c'est-à-dire : faire quelque chose lors d'un changement de fichier ou de répertoire.
Vous créez un fichier .plist.
Criez "XML SUX FOR CONF FILES !" ( C'est vraiment le cas. )
et vous voudrez utiliser une ou les deux clés ci-dessous dans votre job launchd.
WatchPaths <array of strings>
This optional key causes the job to be started if any one of the listed
paths are modified.
QueueDirectories <array of strings>
Much like the WatchPaths option, this key will watch the paths for modi-
fications. The difference being that the job will only be started if the
path is a directory and the directory is not empty.