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 locate
sie 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 Sielocate -b '\NAME'
locate -b '\java'
-b
- Vergleichen Sie nur den Basisnamen mit den angegebenen Mustern.
Antwort2
Bei den meisten locate
Implementierungen:
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
find
ist 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 -b
oder Sie können verwenden
locate java | grep java$