Results 1 to 6 of 6

Thread: mit grep alle nachfolgenden verzeichnisse durchsuchen

  1. #1

    Default mit grep alle nachfolgenden verzeichnisse durchsuchen

    Hallo,

    Ich benutze öfters grep um verschieden Programm-schnipsel auf einen bestimmten ausdruck zu durchsuchen. Leider muss man bei grep nach meinem wissenstand immer die verzeichnistiefe angeben. also tippe ich immer:
    Code:
    > grep -l 'divDevRhoReff' */*/*/*/*/*/*/*/*/*/*/*
    grep: */*/*/*/*/*/*/*/*/*/*/*: No such file or directory
    > grep -l 'divDevRhoReff' */*/*/*/*/*/*/*/*/*/*  
    grep: */*/*/*/*/*/*/*/*/*/*: No such file or directory
    > grep -l 'divDevRhoReff' */*/*/*/*/*/*/*/*/*  
    > grep -l 'divDevRhoReff' */*/*/*/*/*/*/*/*  
    ...
    > grep -l 'divDevRhoReff' *
    Dabei ist mir aufgefallen, dass grep anscheinen immer nur in der letzten möglichen Verzeichnisstiefe sucht. so findet zum Beispiel
    Code:
    > grep -l 'divDevRhoReff' */*/*
    Ergebnisse, die
    Code:
    > grep -l 'divDevRhoReff' */*/*/*/*/*/*/*/*
    nicht findet.

    Meine Frage ist, wie kann ich grep dazu bringen ALLE nachfolgenden Verzeichnisse zu durchsuchen? Auch auf die Gefahr hin, dass es so sehr lange dauert.

    Vielen Dank,

    Camoesas

  2. #2

    Default Re: mit grep alle nachfolgenden verzeichnisse durchsuchen

    Hallo camoesas,

    versuch mal find mit grep zu verbinden. find kann alle Verzeichnisse rekursiv durchsuchen. Die von find gefundene datei übergibts Du dann an grep um sie auf den gewünschten Inhalt zu prüfen.
    Ich bin leider nicht sehr vertraut mit der genauen Syntax. Aber hier ist ein Beispiel das angelehnt an Deine Fragestellung funktionieren sollte:
    Code:
    find /home -type f -exec grep -l 'mtoolsrc' {} \;
    Gruß Boreas

  3. #3
    Join Date
    Sep 2008
    Location
    Sulzbach (Taunus), Hessen [Hesse], Deutschland [Germany]
    Posts
    2,178

    Default Re: mit grep alle nachfolgenden verzeichnisse durchsuchen

    Hallo Leute,

    ich halte mich zwar eher für einen Maus- bzw. Zeiger-Schupster, aber könnte hier nicht die Option -r von grep helfen?:

    grep(1): print lines matching pattern - Linux man page
    File and Directory Selection
    [...]
    -d ACTION, --directories=ACTION
    If an input file is a directory, use ACTION to process it. By default, ACTION is read, which means that directories are read just as if they were ordinary files. If ACTION is skip, directories are silently skipped. If ACTION is recurse, grep reads all files under each directory, recursively; this is equivalent to the -r option.
    [...]
    -R, -r, --recursive
    Read all files under each directory, recursively; this is equivalent to the -d recurse option.
    Gruß Martin

  4. #4

    Default Re: mit grep alle nachfolgenden verzeichnisse durchsuchen

    Hallo Boreas,

    Danke für den Tipp. mit deinem code hats geklappt. diese verlinkumg von find und grep ist auch in wikipedia beschrieben aber damit hats nicht funktioniert.

    Hallo Martin,

    genau nach so was einfaches habe ich gesucht aber damit funktionierts leider nicht. bei mir zumindest tut sich da gar nichts...

    VG Camoesas

  5. #5

    Default Re: mit grep alle nachfolgenden verzeichnisse durchsuchen

    so für dieses Problem gibts ab sofort das super-grep:
    function sgrep()
    {
    find -exec grep -l "$1" {} \;
    }

    danke nochmal für die stützen am anfang!

  6. #6
    Join Date
    Oct 2008
    Location
    near Munich
    Posts
    507

    Default Re: mit grep alle nachfolgenden verzeichnisse durchsuchen

    Probier mal sowas:

    grep -r <begriff> .


    Der "." am Ende ist wichtig, da Grep sonst auf Input von Stdin wartet.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •