Versuch, mit locate
dem Befehl eine genaue Entsprechung für das angegebene Muster zu finden. Es werden jedoch alle übereinstimmenden Dateien angezeigt.
Beispiel: Ich möchte eine Binärdatei mit dem Namen finden:Knoten
Aber es werden mir alle Übereinstimmungen angezeigt, die dieses Wort enthalten:
server2# locate node
/usr/share/man/man9/getnewvnode.9.gz
/usr/share/man/man9/ieee80211_amrr_node_init.9.gz
/usr/share/man/man9/ieee80211_dump_node.9.gz
/usr/share/man/man9/ieee80211_dump_nodes.9.gz
/usr/share/man/man9/ieee80211_find_rxnode.9.gz
/usr/share/man/man9/ieee80211_find_rxnode_withkey.9.gz
/usr/share/man/man9/ieee80211_free_node.9.gz
Antwort1
Wenn Sie sich ansehen locate --help
, finden Sie möglicherweise:
-r, --regexp REGEXP search for basic regexp REGEXP instead of patterns
--regex patterns are extended regexps
Sie können -r
ein Regexp-Muster für Folgendes bereitstellen locate
:
locate -r /node$
Die /
Sicherung node
steht am Anfang des Dateinamens. Die $
Sicherung node
steht am Ende des Dateinamens. Dadurch erhalten Sienurdie Dateien, die dem genauen Dateinamen entsprechen.
Wenn Sie bei der Suche die Groß-/Kleinschreibung nicht berücksichtigen möchten (entspricht Node
, NODE
, nOdE
, usw.), fügen Sie Folgendes hinzu -i
:
locate -i -r /node$
Wenn „locate“ keinen regulären Ausdruck unterstützt, können Sie „grep“ verwenden (wie von Iracicot erwähnt):
locate node | grep /node$
locate -i node | grep -i /node$
Antwort2
Sie können grep mit locate verwenden
server2# locate node | grep node$
Das $-Zeichen weist grep an, das Ende der Zeichenfolge zu betrachten.
Antwort3
Deaktivieren Sie locate
den impliziten Glob von , indem Sie Ihren eigenen Glob hinzufügen, der mit allen Verzeichnissen übereinstimmt:
locate */node
Aus der Manpage:
Wenn any
PATTERN
keine Globbing-Zeichen enthält, verhält sich locate so, als wäre das Muster*PATTERN*
Diese Syntax entspricht einem vollständigen Datei- oder Verzeichnisnamen überall, auch im Stammverzeichnis.