find -exec

Diskutiere find -exec im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo, Mit find ... -exec <irgendwas> \; kann man ja für jede durch find gefundene Datei einen Befehl ausführen lassen. Leider habe ich bisher...

  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. #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
     
  3. 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
     
  4. #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
     
Thema: find -exec
Besucher kamen mit folgenden Suchen
  1. unix find a

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. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  3. Erweiterbarer Wrapper für GNU find

    Erweiterbarer Wrapper für GNU find: Hallo zusammen, Da ich hier noch einen Account habe, wollte ich mal dieses Forum nutzen, um ganz dreist ein wenig Eigenwerbung zu machen :) Ich...
  4. find Ausgabe in "Anführungszeichen"

    find Ausgabe in "Anführungszeichen": Hallo Unixboard-User, ich bin neu hier im Forum und habe ein Problem: Ich habe ein recht großes Script welches auch wunderbar funktioniert....
  5. 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?