FreeBSD 9 : 정확한 파일명을 찾는 방법?


10

사용하려고 locate지정된 패턴에 대한 정확한 일치를 찾는 명령을 사용합니다. 그러나 일치하는 모든 파일이 표시됩니다.

예를 들어 : node 라는 바이너리를 찾고 싶습니다.

그러나이 단어를 포함하는 모든 일치 항목을 제공합니다.

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

답변:


10

를 보면 다음을 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$

locate가 regexp를 지원하지 않는 경우 grep을 사용할 수 있습니다 (Iracicot에서 언급 한대로).

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

또는 -b스위치를 사용하여 기본 이름과 만 일치 시킬 수 있습니다 .locate -br node$
Sarke

6

당신은 위치에 grep을 사용할 수 있습니다

server2# locate node | grep node$

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


1
결과는 같습니다. / usr / ports / www / p5-WebService-Linode 노드로 끝나는 다른 일치 항목이 나타납니다. 나는 그것이 / node $이어야한다고 생각한다?
Alex G

예, 당신도 이것을 시도 할 수 있습니다 (그러나 / 문자를 이스케이프 해야하는지 확실하지 않습니다). locate -b 시도 했습니까?
laracicot

0

locate모든 디렉토리와 일치하는 고유 한 glob를 추가하여의 암시 적 glob를 비활성화 하십시오.

locate */node

매뉴얼 페이지에서 :

PATTERNglobbing 문자가 포함되어 있지 않은 경우 찾기는 패턴이 마치*PATTERN*

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.