Dateien nach Strings durchsuchen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von kivio, 05.04.2006.

  1. kivio

    kivio Grünschnabel

    Dabei seit:
    05.04.2006
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo zusammen, ich möchte gerne mehrere Dateien (mehrere hundert Dateien mit stark verzweigter Verzeichnisstruktur) nach einem gewissen Inhalt durchsuchen und ausgeben, wie oft dieser Inhalt auftaucht. Ich habe es mit cat versucht, was auf eine einzelne Datei angewendet auch gut funktioniert.
    Z.B. so:

    cat file liefert:
    linux
    netbsd
    dragonflybsd
    freebsd
    openbsd
    solaris

    cat file | grep bsd | wc -l liefert wie gewünscht 4.

    Leider funktioniert cat nicht auf (Unter)Verzeichnisse. Hat jemand eine Idee?
     
  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 supersucker, 05.04.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    du könntest es mit find probieren

    find kennt z.b. den parameter "exec".

    also mit find die verzeichnisse durchgehen, dann cat ausführen und das an grep pipen.

    es gibt aber bestimmt noch wesentlich sauberere und bessere lösungen für sowas.
    mir mag nur keine einfallen.
     
  4. #3 Wolfgang, 05.04.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Wenn du nur wissen willst wie oft das Suchwort gesamt in allen Datein vorkommt, dann geht es mit GNU grep z.B. so:
    Code:
    for i in $(find /home/wolle/ -type f -name "*txt" -exec grep -c "Suchwort" {} \;);do ALL=$(($ALL + $i ));done; echo Gesamt $ALL mal gefunden
    
    Wenn du wissen willst in wievielen dateien das Suchwort vorkommt dagegen (mit GNU grep)
    Code:
    ALL=0;
    for i in $(find /home/wolle/ -type f -name "*txt"); do B=$(grep -q "SUCHWORT" "$i");if [ $? -gt 0 ]; then ALL=$(($ALL+1));fi;done; echo Gesamt  $ALL Dateien mit Suchwort gefunden
    
    Gruß Wolfgang
    PS Ich habe hier nur Dateien mit der Endung txt durchsucht!
     
  5. kivio

    kivio Grünschnabel

    Dabei seit:
    05.04.2006
    Beiträge:
    6
    Zustimmungen:
    0
    Danke Wolfgang! Genau das habe ich gesucht!
     
  6. #5 AlexNbg, 13.03.2008
    AlexNbg

    AlexNbg Anfaenger

    Dabei seit:
    13.03.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Ort:
    USA
    Hi,

    also der erst Code funktioniert einwandfrei, aber der zweit hat irgendwie komische auswirkungen. Der erste finde 3 Dateien, der zweite 120?

    Wie muss ich denn den Code umschreiben, damit ich die Dateien ausgegeben bekomme, in denen das Suchwort enthalten ist?

    Danke
    Gruss


    Alex
    (Beginner :) )
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 Gott_in_schwarz, 13.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Sieht so aus, als ob Wolfgang da die if-Abfrage "falsch herum" gemacht hat. Außerdem versteh ich nicht, wieso er das Ergebnis von dem "grep -q" extra in eine Variable packt (sollte ja eigentlich eh nie was ausgeben..), wayne. Wenn du einfach die Dateien haben willst, in denen das Suchwort drin vorkommt, nimm den "-l" switch: (aus "grep --help": -l, --files-with-matches only print FILE names containing matches)
    Code:
    grep -rl 'suchausdruck' /path/to/teh/files/
    das "-r" steht für "recursive" und durchsucht Unterverzeichnisse rekursiv. Willst du einfach nur die Anzahl der Treffer haben, kannst du dies auch einfach in wc (word count) mit dem "-l" switch pipen: (l für lines, also word count lines zählt die Zeilen der Ausgabe, die in es gepipet wird..)
    Code:
    grep -rl 'suchausdruck' /path/to/teh/files/|wc -l
     
  9. #7 AlexNbg, 13.03.2008
    AlexNbg

    AlexNbg Anfaenger

    Dabei seit:
    13.03.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Ort:
    USA
    Danke! Hat funktioniert.
     
Thema: Dateien nach Strings durchsuchen
Besucher kamen mit folgenden Suchen
  1. dateien nach string durchsuchen unix

    ,
  2. unix suchen nach Inhalten in mehreren Dateien

    ,
  3. unix datei durchsuchen

    ,
  4. unix dateien string finden,
  5. linux alle verzeichnisse und dateien nach einem bestimmten wort durchsuchen,
  6. linux dateien nach inhalt durchsuchen,
  7. linux datei nach string durchsuchen,
  8. unix dateien nach string durchsuchen,
  9. Dateien Durchsuchen unix,
  10. unix dateien durchsuchen,
  11. unix mehrere dateien durchsuchen,
  12. alle dateien nach inhalt durchsuchen linux,
  13. python zeichenfolge in datei suchen
Die Seite wird geladen...

Dateien nach Strings durchsuchen - Ähnliche Themen

  1. Nach Inhalt in Dateien suchen und den String aus Datei löschen

    Nach Inhalt in Dateien suchen und den String aus Datei löschen: Hallo alle miteinander, ich bin auf der Suche nach einer Möglichkeit nach Dateien mit einem bestimmten Inhalt zu suchen. Wenn der String in der...
  2. Dateien nach Datum finden

    Dateien nach Datum finden: Hallo zusammen, ich würde gerne Wissen wie ich am einfachsten Dateien nach einem bestimmten Datum in einem Verzeichnis suchen kann. Das...
  3. Dateien von Linux nach Win verschieben und doppelte Dateien automatisch umbenennen.

    Dateien von Linux nach Win verschieben und doppelte Dateien automatisch umbenennen.: Also unter Linux können Namen von Dateien Zeichen in gross oder Kleinschrift haben und werden dennoch als unterschiedliche Dateien erkannt. Unter...
  4. dateien nach inhalt scannen und dann betreffende Zeile löschen

    dateien nach inhalt scannen und dann betreffende Zeile löschen: Hallo zusammen, folgendes zenario.. ich möchte auf einem Linux-Server betsimmte Dateitypen nach einem Inhalt durchsuchen und dann die...
  5. Dateien von Linux nach Win verschieben und konvertieren.

    Dateien von Linux nach Win verschieben und konvertieren.: Hallo, ich würde gerne Dateien vom ext3, nach NTFS, verschieben und dabei die Namen konvertieren, so wie die Inhalte von Textdateien. Am Besten...