So finden Sie Vorkommen einer Datei mithilfe von „locate“

So finden Sie Vorkommen einer Datei mithilfe von „locate“

Auf meinem System gibt es mehrere Java-Installationen, einige davon werden von IDEs im Hintergrund installiert, und ich wollte herausfinden, wo sie sind. Also dachte ich, ich könnte locatesie mit finden. Mein erster Versuch mit

locate java

hatte mehrere tausend Treffer beim Finden .*java.*.

Gibt es eine Möglichkeit, die Suche so einzuschränken, dass nur Dateien mit einem genauen Namen gefunden werden? Keine Pfade, die Java enthalten. Keine Dateien, die Java als Teil ihres Namens enthalten.

PS: Ich hatte schon einmal ein ähnliches Problem, also ignorieren Sie bitte den Java-Teil und behandeln Sie dies als ein Problem beim Suchen von Dateien. Es könnte genauso gut darum gehen, alle Vorkommen von zu finden gcc.

Antwort1

Aus man locate:

Um nach einer Datei mit exaktem Namen NAME(nicht *NAME*) zu suchen,
verwenden Sie locate -b '\NAME'

locate -b '\java'
  • -b- Vergleichen Sie nur den Basisnamen mit den angegebenen Mustern.

Antwort2

Bei den meisten locateImplementierungen:

locate '*/java'

sollte arbeiten.

Wenn das Argument keine Platzhalter enthält, wird das Argument als Zeichenfolge verwendet, um in den Dateipfaden zu suchen.

Wenn Platzhalter enthalten sind, müssen diese mit den vollständigen Pfaden übereinstimmen. Hier endet also jeder Pfad mit /java.

Antwort3

findist möglicherweise eine bessere Möglichkeit,Javabenannte Dateien.

find . -type f -name *java*

Wenn Sie weiterhin Locate verwenden möchten, können Sie verwenden locate -boder Sie können verwenden

locate java | grep java$

verwandte Informationen