Wie schreibe ich ein Skript, das ausgeführt wird, wenn eine neue Datei zu einem bestimmten Verzeichnis hinzugefügt wird?

Ich habe noch nie ein Skript für OS X geschrieben und weiß nicht wirklich, welches Skripttool ich für diese Aufgabe verwenden werde.

Hier ist ein Pseudo-Code für das Skript, das ich erstellen möchte:

whenever a new file X is added to the directory D do:
copy X 
paste X to the directory B

Ich möchte nicht, dass jemand dies für mich codiert, ich möchte wissen, welches Tool (vielleicht Sprache) ich verwenden soll, um dieses Skript zu schreiben, und wie ich OS X dazu bringen kann, es immer dann auszuführen, wenn das Ereignis eintritt.

Ich weiß nicht, was ich das markieren soll. Bitte leisten Sie einen Beitrag. Bitte umleiten, wenn dies nicht das richtige Forum für diese Frage ist.

Ich würde sagen, versuchen Sie es zuerst mit AppleScript
Ordneraktionen?

Antworten (2)

Sehr einfach mit Automator & Folder Actions.

  • Erstellen Sie eine neue Ordneraktion und legen Sie dann die Quelle auf Ordner A fest
  • Wählen Sie eine Finder-Aktion aus der linken Spalte aus.
  • Ziehen Sie „Finder-Objekte kopieren“ von der Mitte nach rechts
  • Legen Sie das Ziel auf Ordner B fest.
  • Geben Sie ihm einen Namen und speichern Sie.

Geben Sie hier die Bildbeschreibung ein

Jedes Mal, wenn etwas zu A hinzugefügt wird, wird es automatisch nach B kopiert.

Und wenn Sie etwas Komplizierteres machen wollen, hat Automator eine „Run Shell Script“-Aktion, die Sie mit einer Reihe von Shell-Script-Variationen, Ruby, Perl und Python, verwenden können. Wenn Sie diesen Weg gehen, würde ich empfehlen, bei sh/bash oder der Sprache zu bleiben, mit der Sie sich am wohlsten fühlen.
Ich habe festgestellt, dass es in dieser einfachen Automator-Aktion einen Fehler gibt, der darin besteht, dass eine Datei, die bereits in A existiert und Sie auf „Ersetzen“ antworten, nicht nach B kopiert wird. Dies wurde unter OS X 10.8.5 getestet und ist es möglicherweise nicht ein Problem in anderen Versionen von OS X.
Danke! Ich musste auch im Finder mit der rechten Maustaste auf den Ordner klicken und auf „Ordneraktionen einrichten“ > „Dienst ausführen“ klicken > die Aktion dort dem Ordner hinzufügen. (macOS 11.6)

Mir fallen nur zwei Möglichkeiten ein, die (kostenlose) Pakete von Drittanbietern erfordern:

1. Ein Paket namens watchdog zur Überwachung von Dateisystemereignissen und zum Auslösen von Aktionen. Es ist eigentlich ein Python-Paket, aber es enthält auch ein Shell-Dienstprogramm, mit dem Sie Skripts vom Terminal aus erstellen können, ohne tatsächlich zu programmieren.

2. Verwenden Sie ein kleines Programm namens fswatch , das die API für Dateisystemereignisse von Mac OS verwendet, um Ihre Dateien und Ordner zu überwachen, und Skripte auslösen kann.

Beide erfordern die Installation des Pakets/Programms und scheinen das zu tun, was Sie benötigen. Hoffe das weist dich zumindest in die richtige Richtung.