Vérification des modifications de dossier / fichier à l'aide d'Automator?


9

Existe-t-il un moyen de vérifier un dossier / fichier pour les modifications (inclut l'ajout de fichiers, la suppression de fichiers, les modifications de fichiers, ...). L'action "Dossier" dans Automator vérifie uniquement si des fichiers ont été ajoutés récemment.


Je ne pense pas que ce soit nativement possible avec Automator. Vous pourriez probablement faire quelque chose avec certains scripts (et les actions de script si vous en avez besoin pour fonctionner dans Automator), mais vous devrez exécuter le flux de travail pour détecter les modifications depuis la dernière exécution.
jtjacques

3
Avez-vous regardé launchd? cf stackoverflow.com/questions/1515730/…
kraymer

Réponses:


5

Vous pouvez ajouter une action "Run Shell Script" avec la commande:

find <directory> -newermm <reference_file>

Cela vous donnera tous les fichiers et répertoires à l'intérieur <directory>qui ont changé depuis le dernier changement de <reference_file>. Assurez-vous simplement de modifier <reference_file>chaque fois que vous exécutez le script Automator.

Jetez également un œil à la page de manuel de recherche (entrez man finddans le terminal) pour plus d'options. La recherche est très puissante et affiner davantage 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 <reference_file>:

find <directory> -type d -newermm <reference_file>

Si la version livrée avec OSX n'est pas suffisante, vous pouvez également essayer la version fournie findutils(brew, macports, etc.) qui devrait avoir un peu plus de fonctionnalités.


1

Je ne connais pas de moyen de le faire avec Automator, mais il y a une application dans l'App Store appelée Folder Watch qui peut faire ce que vous demandez.


1

La dernière fois que j'ai vérifié, Automater utilise Applescript en arrière-plan pour écrire vos actions. Applescript n'a pas beaucoup de profondeur. Bien qu'il puisse obtenir la liste des fichiers dans un répertoire (et donc que vous puissiez savoir quand quelque chose est supprimé), je ne pense 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 les conseils de Kraymer et utiliser launchd. Il a des crochets pour s'exécuter à chaque fois que le contenu d'un dossier est modifié. Lingon (voir aussi sa page SourceForge obsolète ) est une excellente application pour aider les gens à se lancer dans launchd. Vous pouvez écrire votre script / application d'automatisation pour faire tout ce que vous envisagiez de faire lorsque votre répertoire a été modifié et avoir simplement l'appel de tâche launchd.


1

Vous pouvez vérifier une de mes réponses précédentes , mais il semble que vous vouliez

fs_usage -f filesys  

Launchd n'est pas la voie à suivre pour les modifications 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 "SUX XML POUR LES FICHIERS CONF!" (C'est vraiment le cas.)

et vous voudrez utiliser une ou les deux clés ci-dessous dans votre travail 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.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.