FreeBSD 9: 정확한 파일 이름을 찾는 방법은 무엇입니까?

FreeBSD 9: 정확한 파일 이름을 찾는 방법은 무엇입니까?

명령을 사용하여 locate주어진 패턴과 정확히 일치하는 항목을 찾으려고 합니다. 그러나 일치하는 모든 파일이 표시됩니다.

예: 다음과 같은 바이너리를 찾고 싶습니다.마디

하지만 다음 단어가 포함된 모든 일치 항목을 제공합니다.

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

답변1

을 살펴보면 locate --help다음을 찾을 수 있습니다.

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

-r다음 항목에 정규식 패턴을 제공하는 데 사용할 수 있습니다 locate.

locate -r /node$

보장 /node파일 이름의 시작 부분에 있습니다. 보장 $node파일 이름 끝에 있습니다. 이것은 당신에게 줄 것입니다오직정확한 파일 이름과 일치하는 파일.

대소문자를 구분하지 않고 검색하려면( Node, NODE, nOdE등과 일치) 다음을 추가하세요 -i.

locate -i -r /node$

찾기가 정규 표현식을 지원하지 않으면 grep을 사용할 수 있습니다(Iracicot에서 언급한 대로).

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

답변2

찾기와 함께 grep을 사용할 수 있습니다

server2# locate node | grep node$

$ 기호는 grep에게 문자열의 끝을 보라고 지시합니다.

답변3

locate모든 디렉토리와 일치하는 자체 glob을 추가하여 의 암시적 glob을 비활성화합니다 .

locate */node

매뉴얼 페이지에서:

글로빙 문자가 포함되어 있지 않은 경우 PATTERN찾기는 패턴이 다음과 같이 동작합니다.*PATTERN*

이 구문은 루트를 포함하여 어디에서나 전체 파일 또는 디렉터리 이름과 일치합니다.

관련 정보