find -exec

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Hello World, 07.04.2007.

  1. #1 Hello World, 07.04.2007
    Hello World

    Hello World Routinier

    Dabei seit:
    22.11.2006
    Beiträge:
    324
    Zustimmungen:
    0
    Hallo,

    Mit find ... -exec <irgendwas> \; kann man ja für jede durch find gefundene Datei einen Befehl ausführen lassen. Leider habe ich bisher keine Möglichkeit gefunden, in diesen Befehlen Backticks oder Pipes einzubauen. Also wenn ich mich z. B. durch alle Textdateien greppen will:
    find . -iname "*.txt" -exec cat {} | grep foo \;
    (Anm.: das ist nur ein Beispiel um das Problem zu erklären, ich weiß wie man es normalerweise machen würde)
    Das funktioniert aber nicht. Wenn ich das |-Zeichen nicht escape, denkt die shell, ich möchte die Ausgabe von find in grep umleiten. Wenn ich es escape, denkt find, es solle cat das |-Zeichen als zweites Argument übergeben, was natürlich beides Unfug ist, bzw. nicht das, was ich will. Kennt jemand einen Ausweg?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 07.04.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Die einfachste Lösung ist dahinter eine Pipe mit while read einzubauen.
    Das schützt zugleich vor zu vielen Argumenten.

    Gruß Wolfgang
     
  4. ragnar

    ragnar Doppel-As

    Dabei seit:
    25.10.2004
    Beiträge:
    139
    Zustimmungen:
    0
    Ort:
    Düsseldorf
    Moin,

    Was ist hiermit: find . -name '*' -type f -exec grep -H '\gesuchte-wort' '{}' ';'

    Gruß
    Ragnar
     
  5. #4 Wolfgang, 07.04.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn ich das richtig verstanden habe, ging es nicht um das genannte Beispiel mit grep.
    In diesem ist ja ohnehin das typische "useless use off cat" gegeben.
    Code:
    #Das ist sinnlos
    cat datei |grep "Pattern"
    #weil das genau das Gleiche macht
    # aber nur einen Prozess braucht
    grep "Pattern" datei
    
    
    Mehrere exec machen keinen Sinn, da du diese auch gleich hinter find als Pipe oder Schleife oder... anfügen kannst.

    Code:
    find /path -type f -exec grep "pattern" {} \,
    #das Gleiche Ergebnis
    find /path -type f |grep "pattern"
    
    Hier lassen sich beliebige Pipe's (Hmm Mehrzahl von Pipe ... Pipelines ;) )
    anfügen.
    Andere Variante mit while read, oder ...
    Code:
    for I in $(find....); do 
    ...
    done
    Dann geht natürlich auch noch ein Script per exec ausführen zu lassen.

    Ich hoffe wir haben alles zusammen.

    Gruß Wolfgang
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

find -exec

Die Seite wird geladen...

find -exec - Ähnliche Themen

  1. Unterschied zwischen xargs und -exec unter FIND?

    Unterschied zwischen xargs und -exec unter FIND?: Guten Morgen Linux Freunde, ich frage mich, was ist der Unterschied zwischen xargs und -exec unter FIND? sprich: ---------- find /...
  2. Wo befindet sich der Autostartordner?

    Wo befindet sich der Autostartordner?: Hallo ich habe CentOS 7.2.15.11 und Desktopumgebung mate , wo befindet sich der Autostartordner?
  3. Fragen zu find

    Fragen zu find: Hallo an alle, Ich bin ziemlich neu in der Linux Welt und habe paar frage Ich soll alle Datein im system finden die vor weniger als drei Tagen...
  4. Rechner im lokalen Netzwerk finden

    Rechner im lokalen Netzwerk finden: Hallo, in meiner Firma habe ich zwei Linux-Rechner, die ganz modern mit dem Internet verbunden sind. Jetzt möchte ich von dem einem Rechner...
  5. BSI-Audit findet keine akuten Probleme in OpenSSL

    BSI-Audit findet keine akuten Probleme in OpenSSL: Das Bundesamt für Sicherheit in der Informationstechnik hat OpenSSL auf seine Sicherheit untersuchen lassen. Die Analyse zeigt vor allem, dass die...