• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> 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.
 
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.
 
Pipe es doch noch durch ein head(1).
Gruß Pepi
 
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.
 
Ist es möglich zwei greps hintereinander auf xargs loszulassen? Also ich möchte immer den HTML-Titel und danach das Suchergebnis zeigen.
 
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