FreeBSD 9: Come individuare un nome file esatto?


10

Prova di usare il locatecomando per trovare una corrispondenza esatta per il modello dato. Tuttavia, risulta mostrando tutti i file corrispondenti.

Ad esempio: voglio trovare un binario chiamato: nodo

Ma mi dà tutte le corrispondenze contenenti questa parola:

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

Risposte:


10

Se guardi locate --help, potresti trovare:

  -r, --regexp REGEXP    search for basic regexp REGEXP instead of patterns
      --regex            patterns are extended regexps

È possibile utilizzare -rper fornire un modello regexp a locate:

locate -r /node$

I /assicura nodeè all'inizio del nome del file. I $assicura nodesi trova alla fine del nome del file. Questo ti darà solo i file corrispondenti al nome esatto del file.

Se si vuole fare una ricerca case-insensitive (partite Node, NODE, nOdE, ecc), aggiungere -i:

locate -i -r /node$

Se individuare non supporta regexp, è possibile utilizzare grep (come indicato da Iracicot):

locate node | grep /node$
locate -i node | grep -i /node$

In alternativa, puoi usare l' -binterruttore per abbinare solo il nome di base:locate -br node$
Sarke,

6

È possibile utilizzare grep con Locate

server2# locate node | grep node$

Il simbolo $ indica a grep di guardare la fine della stringa.


1
Il risultato è lo stesso Visualizza diverse corrispondenze che terminano con il nodo ... / usr / doors / www / p5-WebService-Linode. Immagino che dovrebbe essere / nodo $?
Alex G,

Sì, puoi provare anche questo (ma non sono sicuro che il carattere / debba essere evitato o meno). Hai provato a individuare -b?
lracicot,

0

Disabilita locateil glob implicito aggiungendo il tuo glob che corrisponde a tutte le directory:

locate */node

Dalla pagina man:

Se uno PATTERNnon contiene caratteri che disturbano, individuare si comporta come se il modello fosse*PATTERN*

Questa sintassi corrisponderà a un nome di file o directory completo ovunque, incluso nella radice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.