humpdi: verzeichnis suchen unter linux

hallo jungs!

wie lautet den der befehl zum suchen eines verzeichnisses am ganzen computer??

danke und lg

  1. wie lautet den der befehl zum suchen eines verzeichnisses am ganzen computer??

    man find

    1. hallo,

      wie lautet den der befehl zum suchen eines verzeichnisses am ganzen computer??
      man find

      Das ergibt zwar eventuell Lesestoff, ist aber nicht der gewünschte "Befehl".

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hi,

        wie lautet den der befehl zum suchen eines verzeichnisses am ganzen computer??
        man find

        Das ergibt zwar eventuell Lesestoff, ist aber nicht der gewünschte "Befehl".

        Kannst du das begründen? Ich hätte jetzt spontan auch find vorgeschlagen.

        mfG,
        steckl

        1. Hallo,

          man find
          Das ergibt zwar eventuell Lesestoff, ist aber nicht der gewünschte "Befehl".

          Kannst du das begründen?

          ja: find sucht innerhalb einer Datei (die auch stdin sein kann) nach einem String und gibt alle Zeilen aus, die den String enthalten. Das ist nicht das, was dem OP weiterhilft.

          Ich hätte jetzt spontan auch find vorgeschlagen.

          Eher schon whereis oder which.

          So long,
           Martin

          --
          Der Stress von heute ist die gute alte Zeit von morgen.
          1. hallo,

            find sucht innerhalb einer Datei (die auch stdin sein kann) nach einem String

            Das hängt von den mitgegebenen options ab. find kann tatsächlich auch so eingegrenzt werden, daß es nach Verzeichnisnamen "scannt".

            Eher schon whereis oder which.

            Es gibt eine lange Reihe möglicher Ansätze. Sie alle haben Vor- und Nachteile.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            ss:| zu:) ls:& fo:) va:) sh:| rl:|
          2. Hallo Martin.

            ja: find sucht innerhalb einer Datei (die auch stdin sein kann) nach einem String und gibt alle Zeilen aus, die den String enthalten. Das ist nicht das, was dem OP weiterhilft.

            Ich glaube, du verwechselst find mit grep.
            man find: »search for files in a directory hierarchy«

            Und zu den anderen Programmen:
            man whereis: »locate the binary, source, and manual page files for a com       mand«
            man which: »locate a command«

            Aller Anfang ist schwer :).

            Servus,
            Flo

          3. Hallo Martin,

            man find
            Das ergibt zwar eventuell Lesestoff, ist aber nicht der gewünschte "Befehl".

            Kannst du das begründen?

            ja: find sucht innerhalb einer Datei (die auch stdin sein kann) nach einem String und gibt alle Zeilen aus, die den String enthalten. Das ist nicht das, was dem OP weiterhilft.

            nicht unter *ix-en:

            erste Zeile von man find:
            find - sucht in einer Verzeichnishierarchie nach Dateien

            find [startverzeichnis] -name "Muster" -type d -print

            kommt dem Wunsch des OP schon recht nahe. Näheres

            [startverzeichnis] # Das Verzeichnis, in dem gesucht werden soll
                                # fehlt die Angabe, dann erfolgt die Suche im aktuellen
                                # Verzeichnis
             -name "Muster"     # Suche Dateien und Verzeichnisse, die dem vorgegebenen
                                # Namensmuster entsprechen
             -type d            # Suche nur Dateien vom Typ Verzeichnis (unter ix-en ist
                                # ja alles eine Datei, auch ein Verzeichnis
             -print             # Aktion: Gebe die Suchergebnisse auf die Standardausgabe
                                #         aus

            Viel mehr zu den tollen Möglichkeiten von find gibts unter dem bereits
            angesprochenen

            man find

            Ich müsste halt beim Suchen von / aus noch jede Menge Zugriffsverweigerungen ausfiltern :-)

            Freundliche Grüße

            Vinzenz

            1. hallo Vinzenz,

              Viel mehr zu den tollen Möglichkeiten

              ... gibt es tatsächlich in deinem von dir selber verlinkten alten posting (naja, _so_ alt isses nun auch wieder nicht). Es gehört übrigens zu den ganz wenigen "hilfreichen", die ich mir selber mal kopiert und auf meinen eigenen virtuellen SELF-Host gelegt habe.

              Ein Vorschlag: Könntest du das, was du "damals" erläutert hast, nicht vielleicht noch ein bißchen erweitern, die Sache mit den "Pipes" noch etwas genauer machen, und das Ganze als Artikel zur Verfügung stellen - einschließlich eines kurzen Vergleichs zu dem, was in der "Eingabeaufforderung" unter Windows möglich ist?

              Grüße aus Berlin

              Christoph S.

              --
              Visitenkarte
              ss:| zu:) ls:& fo:) va:) sh:| rl:|
          4. Hi,

            ja: find sucht innerhalb einer Datei (die auch stdin sein kann) nach einem String und gibt alle Zeilen aus, die den String enthalten. Das ist nicht das, was dem OP weiterhilft.

            Das hört sich eher nach grep an.

            Eher schon whereis oder which.

            whereis kenne ich nicht und which sucht soweit ich weiß nur im Suchpfad (= $PATH).

            mfG,
            steckl

        2. hallo ,

          wie lautet den der befehl zum suchen eines verzeichnisses am ganzen computer??
          man find
          Das ergibt zwar eventuell Lesestoff, ist aber nicht der gewünschte "Befehl".
          Kannst du das begründen? Ich hätte jetzt spontan auch find vorgeschlagen.

          "find" wäre ein Ansatz, ja. Aber "man find" liefert nun einmal nur die manualpage, also insofern nicht das, was gewünscht wurde. Es gäbe Dutzende Handbücher, in denen jeweils auch genannt wird, wie man Verzeichnisse durchsuchen kann ...
          "find" ist schon ganz nett, aber nicht immer nötig.

          Den ausführlichsten, wenn auch vermutlich irritierendsten Hinweis hat Vinzenz gegeben. In seinem alten posting findet sich der ausgiebige Gebrauch von "Pipes". Man muß nun schauen, welches Verzeichnis eventuell gesucht wird, also ob der Name überhaupt bekannt ist. Ist das der Fall, kommt man vermutlich bereits mit
             ls -lR |grep <verzeichnisname>
          hin - vorausgesetzt, es wird von / ausgegangen.

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. "find" wäre ein Ansatz, ja. Aber "man find" liefert nun einmal nur die manualpage, also insofern nicht das, was gewünscht wurde.

            Achso, es ist also nicht richtig, den OP auf die Manpage aufmerksam zu machen? Ich dachte immer, bei Self ist es erwünscht, dem Fragenden Hilfe zur Selbsthilfe zu geben, du hast mir grade gelernt, das es nicht so ist.

            1. Hallo

              "find" wäre ein Ansatz, ja. Aber "man find" liefert nun einmal nur die manualpage, also insofern nicht das, was gewünscht wurde.

              Achso, es ist also nicht richtig, den OP auf die Manpage aufmerksam zu machen? Ich dachte immer, bei Self ist es erwünscht, dem Fragenden Hilfe zur Selbsthilfe zu geben, du hast mir grade gelernt, das es nicht so ist.

              Die Hilfe zur Selbsthilfe sollte man dann aber auch als solche formulieren. Genau das was nicht der Fall und wurde von Christoph zu recht mit einer ironischen Anmerkung versehen.

              Tschö, Auge

              --
              Die deutschen Interessen werden am Liechtenstein verteidigt.
              Veranstaltungsdatenbank Vdb 0.2
            2. hallo,

              Achso, es ist also nicht richtig, den OP auf die Manpage aufmerksam zu machen?

              Nein, ist es in _diesem_ Fall nicht. Richtig wäre gewesen, _erst_ den gewünschten "Befehl" zu nennen, und _dann_ beiläufig zu erwähnen, daß es für diesen Konsolenbefehl eben auch noch eine manpage gibt. Und der Gipfel wärs gewesen, zu erklären, daß "find" eventuell gar nicht zur Verfügung steht und gegebenenfalls erst installiert werden müßte. "grep" dagegen steht in der bash immer zur Verfügung.

              Grüße aus Berlin

              Christoph S.

              --
              Visitenkarte
              ss:| zu:) ls:& fo:) va:) sh:| rl:|
              1. Tach,

                "grep" dagegen steht in der bash immer zur Verfügung.

                grep ist nicht Teil der bash. Und wie kommst du auf die Idee, dass die bash immer zur Verfügung steht, aber find nicht? grep und find sind beide Teil von POSIX, man kann also in einer Standardinstallation vom Vorhandensein von beiden ausgehen.

                mfg
                Woodfighter

              2. daß "find" eventuell gar nicht zur Verfügung steht und gegebenenfalls erst installiert werden müßte. "grep" dagegen steht in der bash immer zur Verfügung.

                Kennst du Dieter Nuhr?

          2. Hi,

            Ist das der Fall, kommt man vermutlich bereits mit
               ls -lR |grep <verzeichnisname>
            hin - vorausgesetzt, es wird von / ausgegangen.

            Gibt es da einen Vorteil im Vergleich zu find?

            Ich würde aus folgenden Gründen die Variante mit find vorziehen.
            1. einfacher verständlich (für Anfänger)
            2. kann man auch noch einstellen, dass nur Verzeichnisse angezeigt werden (ob das bei ls auch geht weiß ich nicht)
            3. sollte es auch schneller sein, da grep mit regulären Ausdrücken sucht und diese ja relativ unperformant sind. (nur eine Vermutung)

            mfG,
            steckl

            1. Hallo

              Ist das der Fall, kommt man vermutlich bereits mit
                 ls -lR |grep <verzeichnisname>
              hin - vorausgesetzt, es wird von / ausgegangen.

              Ich würde aus folgenden Gründen die Variante mit find vorziehen.

              1. einfacher verständlich (für Anfänger)

              als ich damit anfing, fand ich find völlig unverständlich - und mit Pipes gings mir nicht besser.

              1. kann man auch noch einstellen, dass nur Verzeichnisse angezeigt werden (ob das bei ls auch geht weiß ich nicht)

              soweit ich mich erinnere kann man das nicht einstellen. Meine Erinnerung sagt mir, dass ich deswegen auf grep verzichten könne :-)

              1. sollte es auch schneller sein, da grep mit regulären Ausdrücken sucht und diese ja relativ unperformant sind. (nur eine Vermutung)

              fand ich Performance in diesem Kontext irrelevant ...

              Freundliche Grüße

              Vinzenz

              1. hallo Vinzenz,

                als ich damit anfing, fand ich find völlig unverständlich - und mit Pipes gings mir nicht besser.

                ;-)

                Da treffen wir uns.

                Grüße aus Berlin

                Christoph S.

                --
                Visitenkarte
                ss:| zu:) ls:& fo:) va:) sh:| rl:|
            2. hallo,

              Gibt es da einen Vorteil im Vergleich zu find?

              Das kann ich dir gar nicht sagen. Vermutlich ist es - wie so vieles - eine Gewohnheitssache.

              Ich würde [...] die Variante mit find vorziehen.

              Bittesehr. Es ist doch gut und richtig, daß wir hier in diesem Thread unterschiedliche Herangehensweisen darstellen, die - hoffentlich - alle zu demselben Ergebnis führen. Ich bevorzuge Pipes mit grep; aber ganz einfach deswegen, weil ich die gewohnt bin. Ich leugne nicht, daß auch find vielleicht das gewünschte Ergebnis liefert, nur habe ich damit nur geringe Erfahrungen.

              da grep mit regulären Ausdrücken sucht

              Solche Regexes kann man (in Abhängigkeit von der verwendeten Shell) auch find als Optionen beigeben. In den allermeisten Fällen werden wir aber hier im Forum bei vergleichbaren Anfragen davon ausgehen können, daß ein OP gar nicht weiß, was für eine Shell seine "Konsole" ist. Und daß es Unterschiede zwischen der bash und anderen ("kleineren") shells gibt.

              Grüße aus Berlin

              Christoph S.

              --
              Visitenkarte
              ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hallo,

    wie lautet den der befehl zum suchen eines verzeichnisses am ganzen computer??

    Du könntest die Idee aus meinem Archivposting aufgreifen und gemäß Deinen Bedürfnissen anpassen.

    Freundliche Grüße

    Vinzenz

  3. Hallo humpdi.

    Schau dir mal locate bzw. find an.

    locate /foobar
    Findet von / ausgehend alle Verzeichnisse, die mit foobar beginnen.

    find / -type d -name foobar
    Findet von / ausgehend alle Verzeichnisse mit dem exakten Namen foobar.

    Servus,
    Flo