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

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$

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.