Terminalbefehl um .ics Datei zu durchsuchen.

T

tuco111

Mitglied
Thread Starter
Dabei seit
04.12.2008
Beiträge
24
Reaktionspunkte
0
Hallo,

ich hatte Probleme mit dem Kalender von MacOS.
Aus Gründen, die Apple bisher nicht klären konnte, ist in dem Kalender ein einziger Eintrag 48.000fach (!) vorhanden und diese verhindern eine ordentliche Synchronisation.
Da jeder Eintrag in einer separaten .ics Datei gespeichert ist, sind somit über 52.000 (wenn man auch die korrekten Einträge dazuzählt) Einträge vorhanden. Leider können die falschen und richtigen Daten dieselbe Dateigröße haben, so dass ein reines Löschen von bestimmten Daten ausscheidet.
Deshalb müssen alle 52.000 Dateien nach einem bestimmten String durchsucht werden, um sicherzustellen, dass nicht auch die richtigen Dateien gelöscht werden.

Meine Frage/Bitte:
Mit welchem Terminalbefehl kann ich in jeder .ics-Datein einen bestimmten Textinhalt/String suchen, die betreffende Datei in einen anderen Ordner verschieben und im Ursprungsordner löschen?

Da ich keine Ahnung von UNIX-Befehlen habe, wäre es super, wenn mir jemand die Befehlszeile so zur Verfügung stellen könnte, dass ich nur noch die Pfade und den String einsetzen muss.

Das wäre sehr sehr nett.

Viele Grüße

Tuco111
 
Kein Terminal-Befehl, aber es sollte in kurzer Zeit möglich sein alle entsprechenden Einträge zu entfernen. Gerade ausprobiert, das Auswählen funktioniert auch unter High Sierra.

https://discussions.apple.com/thread/8263284
 
  • Gefällt mir
Reaktionen: KOJOTE
Jetzt mal ganz ohne Terminal. Ich würde die Datei per Texteditor, z.B. TextWrangler, öffnen und dann versuchen per „suchen und ersetzen“ die entsprechende Datei bearbeiten. Vielleicht geht es sogar mit TextEdit. Du kannst ja zur Sicherheit erstmal eine Kopie der entsprechenden Datei bearbeiten.
 
Wenn dass das Problem löst, dann hat der Apple-Support aber mal wieder volle Leistung gezeigt.
Wollte jetzt das Löschen hier nicht ausprobieren. ;)

Generell würde ich bei solchen Dingen nicht von außen mit irgendwelchen Befehlen Dateien löschen, sondern versuchen aus der Anwendung heraus eine Lösung zu finden. Auswählen kann man etliche Events und mit Rechts-Klick kann man auch löschen auswählen oder eben die Lösch-Taste drücken. Laut Link scheint das ja auch zu klappen.
 
Wenn diesen Thread hier bei MacUser richtig deute, kannst du auch innerhalb der Datei per Code/Befehl entsprechende Änderungen vornehmen. Jetzt braucht es halt nur noch die richtigen Befehle.;)
 
Danke für die Hinweise.

Es handelt sich nicht um eine einzelne Datei. Die Bearbeitung einer einzelnen Datei mit "Textedit" o.ä. Programmen ist kein Problem. Es handelt sich 48.000 (!) .ics Dateien, alle mit gleichem Inhalt. Deswegen muss das Problem automatisiert gelöst werden.
Ich muss herausfinden, in welchen Dateien ein bestimmter Textinhalt steht. Ich habe schon mit Spotlight-Suche versucht, aber keinen Erfolg gehabt.

In der Anwendung selbst 48.000 Einträge zu löschen, ist zu zeitaufwändig, vor allem, weil sich die Datenbank nach jedem Löschen wieder aktualisiert.
 
Hast du es probiert so viele Einträge wie möglich auszuwählen und zu löschen?
 
Klingt nach Apple Script oder Shell Script.
Tell Aplication „Textwrangler“
Öffne Datei 1, suche nach x, ändere, schließe...
Öffne Datei 2...
falls das mit TextWrangler überhaupt möglich ist.

Da kann ich leider nicht weiter helfen.

EDIT: Ob das mit Automator möglich ist?
 
Zuletzt bearbeitet:
Da ich keine Ahnung von UNIX-Befehlen habe, wäre es super, wenn mir jemand die Befehlszeile so zur Verfügung stellen könnte, dass ich nur noch die Pfade und den String einsetzen muss.
Zuerst solltest Du versuchen, die Dateien in der Shell richtig zu finden: https://www.cyberciti.biz/faq/howto-search-find-file-for-text-string/
https://www.cyberciti.biz/faq/howto-search-find-file-for-text-string/
https://www.macworld.com/article/1041504/software-development/jangeekfactor.html

Erst wenn Du das sicher raus hast, solltest Du die Zeile erweitern mit einem Befehl zum Löschen.

*Ein Backup des ganzen Ordners und Deines Systems sowieso sollte vorhanden sein.
 
  • Gefällt mir
Reaktionen: dg2rbf
Vielleicht fragst du in diesem Thread im MacUser-Forum „Scripting und Automation“ mal nach und verweist hier her.
 
Bitteschön:
Code:
find ./pfad/zu/den/ics/dateien/ -type f -depth 1 -exec grep -q "Suchtext" {} \; -exec echo "{}" \;
Das ist für den Probelauf (nur Ausgabe per echo). Und wenn dabei die richtigen Dateien angezeigt werden, kannst du mit Ctrl+C den Probelauf abbrechen. Dann rufst Du diesen Befehl auf, der am Ende ein bisschen anders ist:
Code:
find ./pfad/zu/den/ics/dateien/ -type f -depth 1 -exec grep -q "Suchtext" {} \; -exec mv "{}" /pfad/zum/neuen/verzeichnis/ \;
 
Das wird nicht gehen, weil der iCloudserver wieder nachliefert.

Ich vermute: Alle Kalenderclients abmelden
im Browser auf icloud.com gehen > Kalender
dort händisch löschen (ich weiß die Anzahl, aber auf dem Webserver von Apple wirst Du kein Skript laufen lassen können)
Kalenderclients wieder verbinden
 
Das wird nicht gehen, weil der iCloudserver wieder nachliefert.

Der Cloudserver soll doch immer den aktuellsten Stand halten.
D.h. offline gehen, die ics-Dateien bearbeiten, online gehen und dann sollte er den Stand vom Mac (da aktueller) übernehmen.

Oder irre ich mich?
 
Der Cloudserver soll doch immer den aktuellsten Stand halten.
D.h. offline gehen, die ics-Dateien bearbeiten, online gehen und dann sollte er den Stand vom Mac (da aktueller) übernehmen.

Oder irre ich mich?
Die iCloud-Datei ist der Master.
 
Zurück
Oben Unten