Intentando usar locate
el comando para encontrar una coincidencia exacta para el patrón dado. Sin embargo, el resultado muestra todos los archivos coincidentes.
Por ejemplo: quiero encontrar un binario llamado:nodo
Pero me da todas las coincidencias que contienen esta palabra:
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
Respuesta1
Si miras locate --help
, puedes encontrar:
-r, --regexp REGEXP search for basic regexp REGEXP instead of patterns
--regex patterns are extended regexps
Puede utilizar -r
para proporcionar un patrón de expresión regular para locate
:
locate -r /node$
El /
asegura node
está al comienzo del nombre del archivo. El $
asegura node
está al final del nombre del archivo. Esto te darásololos archivos que coinciden con el nombre de archivo exacto.
Si desea realizar una búsqueda que no distinga entre mayúsculas y minúsculas (coincidencias Node
, NODE
etc. nOdE
), agregue -i
:
locate -i -r /node$
Si localizar no admite expresiones regulares, puede usar grep (como lo menciona Iracicot):
locate node | grep /node$
locate -i node | grep -i /node$
Respuesta2
Puedes usar grep con localizar
server2# locate node | grep node$
El signo $ le indicará a grep que mire el final de la cadena.
Respuesta3
Deshabilite locate
el glob implícito agregando su propio glob que coincida con todos los directorios:
locate */node
Desde la página de manual:
Si alguno
PATTERN
no contiene caracteres globales, la localización se comporta como si el patrón fuera*PATTERN*
Esta sintaxis coincidirá con un nombre completo de archivo o directorio en cualquier lugar, incluso en la raíz.