디렉토리에 이름이 포함되면 찾기가 반복을 중지합니다.

디렉토리에 이름이 포함되면 찾기가 반복을 중지합니다.

때로는 찾기를 사용할 때 내 검색 문자열이 (우연히든 의도적으로든) 디렉터리의 일부와 일치하는 경우가 있습니다. 이렇게 하면 디렉토리의 해당 지점 아래에 있는 모든 항목이 인쇄됩니다. 예를 들어:

$ locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/
/lib/modules/
/lib/firmware/
.... etc

이로 인해 빠르게 제어가 불가능해지고 검색이 어려워질 수 있습니다.

이를 방지할 수 있는 방법이 있나요? 예를 들어 다음과 같이 인쇄해 보겠습니다.

$locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/

그게 다야?

또한, 디렉토리를 찾아서 찾아보도록 하는 것이 가능합니까?

예를 들어 (qemu 기본 폴더를 찾으세요)

실제:

$locate qemu
home/myname/qemu
home/myname/qemu/.svn
home/myname/qemu/.svn/.....
home/myname/qemu/Makefile
.....
usr/bin/qemu
.....

예상하다:

$locate (option) qemu
/home/myname/qemu
/usr/bin/qemu

답변1

mlocate버전이 있는 시스템에서는 locate또는 옵션을 사용하여 일치를 제한할 수 있습니다.-b--basename

locate -b lib

...이것은 이름에 해당 문자열이 포함된 파일로 결과를 제한합니다. 내 시스템에서는 일치하는 항목이 훨씬 적습니다.

$ locate lib | wc -l
28901
$ locate -b lib | wc -l
3430

답변2

locate절대 경로 이름 목록을 인쇄합니다. 당신은 할 수언제나파이프 결과grep파일 이름만 가져오기

locate lib |grep -E '/lib$'

아니면 디렉토리 이름만

locate lib |grep '/lib/' | sed -e 's,/lib/.*$,/lib,' | sort -u

이 작업을 자주 수행하는 경우 각 작업을 수행하는 작은 스크립트를 작성할 수 있습니다(물론 매개변수화된 "lib").

답변3

아래 옵션을 사용하여 항목 수를 제한할 수 있습니다 -l.

 locate -w lib -l 1
  • -w정확한 단어와 일치

  • -l지정된 번호를 찾은 후 성공적으로 종료됩니다.

-b또는 옵션을 사용할 수 있습니다

locate -b '\lib' -l 1
  • -b지정된 패턴을 가진 기본 이름만 일치합니다.

관련 정보