Automator Hilfe gesucht

htsl

htsl

Mitglied
Thread Starter
Dabei seit
20.09.2023
Beiträge
24
Reaktionspunkte
3
Hallo zusammen,

ich habe hier ein kleines Problem, das wie geschaffen für Automator ist, ich aber keine Idee habe, wie ich das umsetzen kann.

Es geht um eine Reihe von Ordnern, deren Inhalt Ordner und in Einzelfällen auch kleine Clips enthalten. Dabei handelt es sich um eine größere Sammlung von Fotos und Filmen, die aber in ihren Ordnern leider völlig unsortiert vorliegen. Die Struktur sieht dann z.B. so aus:

Code:
Fotos --> Hunde (grau) --> Bernhardiner
                       --> Dackel (blau)
                       --> Terrier
      --> Fisch        --> Hecht
                       --> Karpfen
                       --> Wal

Wenn jetzt z.B. die Fotos im Ordner Dackel bearbeitet sind, wird der Ordner mit einem blauen Tag versehen. Ebenso der Ordner Hunde, da darin ein bearbeiteter Ordner steckt. Wenn eine Reihe von Bearbeitungen durchgeführt wurde, werden die erledigten Ordner (hier Dackel) auf einen Fileserver verschoben, der die gleiche Ordnerstruktur aufweist. Bis jetzt habe ich immer alles per Hand verschoben, was aber natürlich einen mehr oder weniger großen Zeitaufwand bedeutet.

Das Automator Script soll nun folgendes erledigen:
1. Alle mit einem grauen Tag versehenen übergeordneten Ordner (Fische, Hunde) durchgehen und alle darin befindlichen blau markierten Ordner und Dateien auf den Server verschieben
2. Alle Markierungen der verschobenen Elemente entfernen
3. Markierungen auf den übergeordneten Ordnern nicht entfernen

D.h., hinterher würde das Beispiel so aussehen. Der Ordner Dackel ist weg, die Markierung bei Hunde bleibt.
Code:
Fotos --> Hunde (grau) --> Bernhardiner
                       --> Terrier
      --> Fisch        --> Hecht
                       --> Karpfen
                       --> Wal
Das sollte doch eigentlich für Automator kein Problem darstellen, oder? Hat da jemand eine Idee dazu?
 
Hallo,

und nein, das ist keine Aufgabe für den Automator.
Dein Anliegen ein klassischer Fall für das Kommandozeilen Programm rsync (welches man allerdings auch aus dem Automator heraus starten könnte: Aktion Shellscript ausführen).
Rsync synchronisiert nur alle geänderten Dateien auf ein entferntes Verzeichnis, und zwar - sofern nicht explizit angegeben - ohne "extended Attributes" ... sprich ohne "Tags". Diese Dateien können dann automatisch im Quellverzeichnis gelöscht werden. Es lassen sich auch Dateien ausschließen.
Beispiele oder "Tutorials" zu rsync findet man ohne Ende im Netz.
Bei Problemen natürlich auch gerne weitere Hilfe hier...

Gruß
 
  • Gefällt mir
Reaktionen: dg2rbf
Hallo varuna,
die Idee ist im Prinzip schon richtig, aber es ist auch nicht selten der Fall, daß nicht alle oder gar keine Fotos bearbeitet, sondern nur kontrolliert werden. Ich nutze rsync schon in der Firma für Backups unseres Webservers, weil eben nur die geänderten Dateien kopiert werden. Aber "das letzte Mal geöffnet" gilt nicht als geändert. Die Aktion müßte sich schon am Tag orientieren.
 
Hallo,

wenn ich dich richtig verstehe, dann:
angenommen, du würdest rsync zum Synchronisieren der Verzeichnisse nehmen, bräuchtest du eigentlich nur ein Anhängsel, welches dir blau getaggte Ordner oder Dateien vom Quellverzeichnis löscht?

Bash:
mdfind -0 -onlyin /Pfad/zum/Quellverzeichnis "kMDItemUserTags == Blau" | xargs -0 rm -r --

Gruß
 
Hallo Varuna,

das ist im Prinzip richtig. Nur müssen vorher die getaggten Ordner noch kopiert werden. Und da sehe ich das Problem. Es sollen nicht einfach alle Ordner / Dateien synchronisiert werden, sondern nur die, die bearbeitet wurden. Das Bearbeiten kann aber auch nur ein Kontrollieren sein. Wenn da alles paßt, werden weder die Dateien, noch der entsprechende Ordner bearbeitet, sondern nur mit einem Tag versehen. Das Taggen alleine ändert aber das Änderungsdatum nicht.

Ließen sich die mdfind Ergebnisse weiterverwenden, könnten die doch für einen Kopiervorgang genutzt werden. Ich konnte da aber nichts zu finden. Oder sehe ich das falsch?
 
Hallo,

ich gehe wohl von falschen Voraussetzungen aus.
Zu deiner Frage:
Ja, die Ergebnisse von einer mdfind Suche lassen sich natürlich weiterverwenden.
Mit einem xargs Skript ginge das auch, doch hier eine "Standard-Lösung", die du auch leicht für andere Zwecke modifizieren kannst:

Bash:
for f in $(Such-Befehl)
do
    Weiterverarbeitungsbefehl-1 für "$f"
    Weiterverarbeitungsbefehl-2 für "$f"
    .
    Weiterverarbeitungsbefehl-n für "$f"
done

So sähe das für lokales Kopieren aus:
Bash:
for f in $(mdfind -onlyin /Pfad/zum/Quellverzeichnis "kMDItemUserTags == Blau")
do
    cp -RX "$f" /Pfad/zum/Zielverzeichnis
    rm -r "$f"
done

Hier geht es allerdings ja um das Kopieren auf einen Server... da kenne ich mich nicht aus.
Statt cp nimmt man jedenfalls scp und muss einen public key hinterlegen usw...
 
Hallo Varuna,

es geht da um einen lokalen Server, der per smb angesprochen wird. das sollte ich noch hinkriegen. Aber vielen Dank soweit schon mal. Damit hast du mir schon mal stark weitergeholfen. Ich werde das am Wochenende mal ausprobieren.
 
Hallo Varuna,,

das Script funktioniert soweit sehr gut. Allerdings nur, solange in den getaggten Dateien und Ordnern kein Leerzeichen enthalten ist. Ein Ordner "große_Dackel" wird kopiert, "große Dackel" funktioniert nicht, weil er einen Ordner "große" nicht findet.

Und noch ein anderes Problem ist dabei aufgefallen. Blaue Unterordner werden zwar gefunden und auch kopiert, aber alle direkt ins Zielverzeichnis. Wie beim Strukturbeispiel im ersten Post wird "Dackel" zwar gefunden, aber am Ziel parallel zu "Hunde" und "Fisch" abgelegt. Gibt es die Möglichkeit, den relativen Pfad mitzunehmen?
 
Hallo,

ich kenne nur rsync zum Kopieren von Ordnerstrukturen.
Wobei: cpio und pax können das ja wohl auch. Musst du deine Suchmaschine quälen!

Leerzeichen maskieren:
In meinem Beispiel mit ""
Code:
"$(mdfind -onlyin /Pfad/zum/Quellverzeichnis "kMDItemUserTags == Blau")"

Gruß
 
Zurück
Oben Unten