때로는 찾기를 사용할 때 내 검색 문자열이 (우연히든 의도적으로든) 디렉터리의 일부와 일치하는 경우가 있습니다. 이렇게 하면 디렉토리의 해당 지점 아래에 있는 모든 항목이 인쇄됩니다. 예를 들어:
$ 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
지정된 패턴을 가진 기본 이름만 일치합니다.