• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

mdfind-Ausgabe weiterverarbeiten (Fundstelle anzeigen)

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi,

mit mdfind kann man sich ja leider nur anzeigen lassen in welchen Dateien sich das gesuchte Wort befindet. Kann man diese ausgegebene Dateiliste irgendwie mit weiteren Unix-Tools nutzen, um die erste Fundstelle rauszufinden und anzuzeigen (also z.B. 80 Wörter in Näher der Fundstelle anzeigen lassen)?

Konkret möchte ich mdfind mittels PHP nutzen, da es keine Suchmaschinen-Skripte in PHP gibt, die mit meiner Datenmenge zurecht kommen (über 100000 HTML-Dateien). PhpDig indexiert gar nichts und iSearch2 macht bei der Hälfte schlapp.

Oder kennt jemand einen anderen Weg wie ich so viele HTML-Dateien durchsuchbar bekomme. Spotlight selber ist leider zu umständlich, da man recht viel klicken muss, bis man die Suche auf einen Ordner eingeschränkt hat. Ich habe auch schon Tools wie Together oder DevonThink probiert, aber die sind auch überfordert.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Nach vielem Tüfteln bin ich auf eine halbwegs brauchbare Lösung gestoßen:

Code:
mdfind -0 -onlyin ./Desktop "(kMDItemTextContent == 'SUCHBEGRIFF*') && (kMDItemContentType == 'public.html')" | xargs -0 grep -i "SUCHBEGRIFF"

Doof ist nur, dass alle Fundstellen angezeigt werden und nicht nur die erste.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Pipe es doch noch durch ein head(1).
Gruß Pepi
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Oh sorry, wusste nicht, dass der Grep-Befehl in OS X mächtiger ist als was man bei der Suche nach "manpage grep" in Google findet. Mit dem Parameter -m1 erreiche ich das gewünschte.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Ist es möglich zwei greps hintereinander auf xargs loszulassen? Also ich möchte immer den HTML-Titel und danach das Suchergebnis zeigen.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Das wird dann lagsam ein Fall für sed(1) oder awk(1) schätze ich. Wobei Du das direkt mit grep auch machen kannst wenn die Zeilen direkt auf die Zeile folgen in der Dein Suchergebnis steht.
Gruß Pepi