FreeBSD 9: Jak znaleźć dokładną nazwę pliku?

10

Próba użycia locatepolecenia w celu znalezienia dokładnego dopasowania dla podanego wzorca. Jednak wyniki pokazują wszystkie pasujące pliki ..

Na przykład: chcę znaleźć plik binarny o nazwie: node

Ale daje mi wszystkie dopasowania zawierające to słowo:

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
Alex G.
źródło

Odpowiedzi:

10

Jeśli spojrzysz locate --help, możesz znaleźć:

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

Możesz użyć -rwzoru wzorca wyrażenia regularnego, aby locate:

locate -r /node$

Te /, zapewnia nodeto na początku nazwy pliku. Te $, zapewnia nodeto na końcu nazwy pliku. To da ci tylko pliki pasujące do dokładnej nazwy pliku.

Jeśli chcesz wykonać wyszukiwanie bez uwzględniania wielkości liter (mecze Node, NODE, nOdEitp), dodać -i:

locate -i -r /node$

Jeśli locate nie obsługuje wyrażenia regularnego, możesz użyć grep (jak wspomniano w Iracicot):

locate node | grep /node$
locate -i node | grep -i /node$
ADTC
źródło
Możesz też użyć -bprzełącznika, aby dopasować tylko do nazwy basename:locate -br node$
Sarke
6

Możesz użyć grep z locate

server2# locate node | grep node$

Znak $ powie grep, aby spojrzał na koniec łańcucha.

lacicot
źródło
1
Wynik jest taki sam. Wywołuje różne dopasowania kończące się na node ... / usr / porty / www / p5-WebService-Linode. Chyba powinien to być / node $?
Alex G
Tak, możesz też tego spróbować (ale nie jestem pewien, czy znak / musi być dodany, czy nie). Czy próbowałeś zlokalizować -b?
lracicot
0

Wyłącz locatedomyślną glob, dodając własną glob, która pasuje do wszystkich katalogów:

locate */node

Ze strony podręcznika:

Jeśli którykolwiek PATTERNnie zawiera znaków globowania, locate zachowuje się tak, jakby był wzorzec*PATTERN*

Ta składnia będzie pasować do pełnej nazwy pliku lub katalogu w dowolnym miejscu, w tym w katalogu głównym.

Roger Dahl
źródło