1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

mdfind-Ausgabe weiterverarbeiten (Fundstelle anzeigen)

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von Tekl, 13.08.08.

  1. Tekl

    Tekl Fairs Vortrefflicher

    Dabei seit:
    01.06.05
    Beiträge:
    4.622
    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.
     
  2. Tekl

    Tekl Fairs Vortrefflicher

    Dabei seit:
    01.06.05
    Beiträge:
    4.622
    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.
     
  3. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Pipe es doch noch durch ein head(1).
    Gruß Pepi
     
  4. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.903
    man grep
     
  5. Tekl

    Tekl Fairs Vortrefflicher

    Dabei seit:
    01.06.05
    Beiträge:
    4.622
    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.
     
  6. Tekl

    Tekl Fairs Vortrefflicher

    Dabei seit:
    01.06.05
    Beiträge:
    4.622
    Ist es möglich zwei greps hintereinander auf xargs loszulassen? Also ich möchte immer den HTML-Titel und danach das Suchergebnis zeigen.
     
  7. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    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
     

Diese Seite empfehlen