• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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