Suchen Sie mit Automator nach Ordner-/Dateiänderungen?

Gibt es eine Möglichkeit, einen Ordner/eine Datei auf Änderungen zu überprüfen (einschließlich Hinzufügen von Dateien, Löschen von Dateien, Änderungen an Dateien usw.). Die „Ordneraktion“ in Automator prüft nur, ob Dateien neu hinzugefügt wurden.

Ich glaube nicht, dass dies mit Automator nativ möglich ist. Sie könnten wahrscheinlich etwas mit Skripting tun (und den Skriptaktionen, wenn Sie es in Automator benötigen), aber Sie müssten den Workflow ausführen, um Änderungen seit der letzten Ausführung zu erkennen.
Hast du dir launchd angeschaut? vgl . stackoverflow.com/questions/1515730/…

Antworten (4)

Sie können eine "Run Shell Script"-Aktion mit dem Befehl 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 nur sicher, dass Sie jedes Mal ändern <reference_file>, wenn Sie das Automator-Skript ausführen.

Werfen Sie auch einen Blick auf die Find-Manpage (Eingabe man findim Terminal) für weitere Optionen. Find ist sehr leistungsfähig und die weitere Verfeinerung Ihrer Suche ist normalerweise eine Frage einiger zusätzlicher Optionen. B. nur nach Verzeichnissen suchen, die geändert wurden nach <reference_file>:

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

Wenn die mit OSX gelieferte Version nicht ausreicht, können Sie auch die mitgelieferte Version findutils(Brew, Macports usw.) ausprobieren, die etwas mehr Funktionen haben sollte.

Ich kenne keine Möglichkeit, dies mit Automator zu tun, aber es gibt eine App im App Store namens Folder Watch, die möglicherweise das tut, was Sie verlangen.

Als ich das letzte Mal nachgesehen habe, verwendet Automater Applescript im Hintergrund, um Ihre Aktionen zu skripten. Applescript hat nicht viel Tiefe. Während es die Liste der Dateien in einem Verzeichnis abrufen kann (und Sie daher herausfinden könnten, wann etwas gelöscht wird), glaube ich 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 hat Hooks, die ausgeführt werden, wenn der Inhalt eines Ordners geändert wird. Lingon (siehe auch seine veraltete SourceForge-Seite ) ist eine großartige Anwendung, um Leuten beim Einstieg in launchd zu helfen. Sie können Ihr Automator-Skript / Ihre Anwendung so schreiben, dass sie das tut, was Sie vorhatten, als Ihr Verzeichnis geändert wurde, und dies einfach von der launchd-Aufgabe aufrufen lassen.

Sie können eine frühere Antwort von mir überprüfen , aber es klingt so, als würden Sie es wollen

fs_usage -f filesys  

Launchd ist nicht der richtige Weg für Dateiänderungen, fs_usage verwendet die zugrunde liegende Maschine, die Spotlight antreibt.

EDIT: Ich bin hier völlig falsch. Launchd hat genau die erforderliche Funktionalität, dh etwas bei einer Datei- oder Verzeichnisänderung tun.

Sie erstellen eine .plist-Datei.

Schrei „XML SUX FÜR KONF-DATEIEN!“ ( Macht es wirklich. )

und Sie sollten einen oder beide der folgenden Schlüssel in Ihrem launchd-Job 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.