Gibt es eine Möglichkeit, einen Ordner / eine Datei auf Änderungen zu überprüfen (einschließlich Hinzufügen von Dateien, Löschen von Dateien, Ändern von Dateien, ...)? Die 'Ordneraktion' in Automator überprüft nur, ob Dateien neu hinzugefügt wurden.
Gibt es eine Möglichkeit, einen Ordner / eine Datei auf Änderungen zu überprüfen (einschließlich Hinzufügen von Dateien, Löschen von Dateien, Ändern von Dateien, ...)? Die 'Ordneraktion' in Automator überprüft nur, ob Dateien neu hinzugefügt wurden.
Antworten:
Sie können mit dem folgenden Befehl eine Aktion "Shell-Skript ausführen" hinzufügen:
find <directory> -newermm <reference_file>
Dadurch erhalten Sie alle Dateien und Verzeichnisse <directory>
, die sich seit der letzten Änderung von geändert haben <reference_file>
. Stellen Sie einfach sicher, dass Sie die Änderungen <reference_file>
jedes Mal ändern, wenn Sie das Automator-Skript ausführen.
man find
Weitere Optionen finden Sie auch auf der Seite Handbuch suchen ( im Terminal eingeben ). Die Suche ist sehr leistungsfähig und die weitere Verfeinerung Ihrer Suche ist normalerweise eine Frage einiger zusätzlicher Optionen. ZB nur nach Verzeichnissen suchen, die geändert wurden nach <reference_file>
:
find <directory> -type d -newermm <reference_file>
Wenn die mit OSX findutils
gelieferte Version nicht ausreicht, können Sie auch die mitgelieferte Version (Brew, Macports usw.) ausprobieren, die etwas mehr Funktionen haben sollte.
Als ich das letzte Mal nachgesehen habe, verwendet Automater Applescript im Hintergrund, um Ihre Aktionen zu skripten. Applescript hat nicht viel Tiefe. Es kann zwar die Liste der Dateien in einem Verzeichnis abrufen (und Sie können daher herausfinden, wann etwas gelöscht wird), aber ich glaube nicht, dass es Änderungen an einer Datei berechnen kann.
Was Sie wirklich nutzen müssen, sind Dateisystembenachrichtigungen. Und da das ein Biest ist, würde ich Kraymers Rat befolgen und launchd verwenden. Es verfügt über Hooks, die immer dann ausgeführt werden können, wenn der Inhalt eines Ordners geändert wird. Lingon (siehe auch die veraltete SourceForge-Seite ) ist eine großartige Anwendung, um Leuten zu helfen, in den Start zu springen. Sie können Ihr Automator-Skript / Ihre Automator-Anwendung schreiben, um alles zu tun, was Sie vorhatten, als Ihr Verzeichnis geändert wurde, und einfach die Task "launchd" aufrufen.
Sie können eine frühere Antwort von mir überprüfen , aber es klingt wie Sie wollen
fs_usage -f filesys
Launchd ist nicht der richtige Weg, um Dateiänderungen vorzunehmen. Fs_usage verwendet den zugrunde liegenden Computer, der Spotlight unterstützt.
EDIT: Ich bin hier völlig falsch. Launchd verfügt über genau die erforderliche Funktionalität, dh: eine Datei oder ein Verzeichnis ändern.
Sie erstellen eine .plist-Datei.
Schrei "XML SUX FOR CONF FILES!" ( Macht es wirklich. )
und Sie möchten einen oder beide der folgenden Schlüssel in Ihrem Startjob verwenden.
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.