felix: Linux find dateien suchen

hallo,

ich habe eine frage, wie kann ich mit "find" (unter LINUX) nach dateien suchen, die eine bestimmte textpassage enthalten?

gruss

felix

  1. Hi,
    find --help hätte dir dieses Posting erspart, aber um deine Frage zu beantworten:

    find VERZEICHNIS -iname *SUCHWORT*

    Markus.

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:{ mo:) va:) de:] zu:) fl:( ss:| ls:] js:|

    1. Hi,

      find --help hätte dir dieses Posting erspart, aber um deine Frage zu beantworten:

      Lesen lernen, hätte Dein Posting gespart, um damit Deine Antwort zu zerlegen! ;-)

      find VERZEICHNIS -iname *SUCHWORT*

      Erstens sollte es sauberer heißen:
      find VERZEICHNIS -iname \SUCHWORT\

      Zweitens wäre GREP die richtige Lösung.
      Alternativ auch eine Kombination:

      find -iname \so_aehnlich\|grep -irl enthaelt_zeichen_x

      Gruß
      Reiner

      1. Hallo,

        Alternativ auch eine Kombination:
        find -iname \so_aehnlich\ | grep -irl enthaelt_zeichen_x

        Das listet alle Dateinamen auf, die von find gefunden wurden und in deren Dateinamen das "enthaelt_zeichen_x" vorkommt. Es durchsucht _nicht_ den Dateiihalt, weil grep ohne [FILE]-Attribut aufgerufen wird und die Pipe einfach nur STDOUT von find an STDIN von grep leitet.

        viele Grüße

        Axel

  2. Hallo,

    ich habe eine frage, wie kann ich mit "find" (unter LINUX) nach dateien suchen, die eine bestimmte textpassage enthalten?

    Find ist dafür nicht zuständig. Find sucht nur nach Dateinamen.
    http://www.die.net/doc/linux/man/man1/find.1.html

    Um _in_ Dateien zu suchen, benötigst Du grep.
    http://www.die.net/doc/linux/man/man1/grep.1.html

    Im aktuellen Verzeichnis durchsuchst Du alle Dteien nach einem Suchbegriff mit:

    grep -i "Suchbegriff" *

    Wenn Du Unterverzeichnisse mit durchsuchen willst, musst Du grep und find kombinieren. Der * muss durch eine Dateiliste, die find liefert, ersetzt werden.

    grep -i "Suchbegriff" find . -type f -print

    find . -type f -print
    ergibt eine Liste aller Dateien vom Typ regular file, ausgehend vom aktuellen Verzeichnis (.) und allen Unterverzeichnissen.
    Die Backticks sammeln die Dateiliste ein, statt sie an stdout auszugeben.
    Diese steht dann grep als Dateiliste zur Verfügung.

    viele Grüße

    Axel