지정된 디렉토리 내에서 locate 명령을 어떻게 사용합니까?


16

locateLinux 에서 명령을 사용하고 있습니다. 나의 현재 사용법은 전체 파일 시스템을 검색합니다. 특정 디렉토리 내에서만 검색하고 싶습니다. 어떻게해야합니까?


TLDR : 다음은 locate지정된 디렉토리 내에서 검색 할 수있는 터미널 별명입니다 . alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " 일단 별칭이 적용되면 터미널 유형 my_locate *foo*에서 레이스를 시작합니다. 콜론 문자를 사용하여 데이터베이스를 연결하여 데이터베이스 업데이트를 연결하고 검색을 찾을 수 있습니다. rtfm : linux.die.net/man/8/updatedb
Eric

답변:


11

또 다른 방법은 다음에서 패턴 일치를 사용하는 것입니다 locate.

locate '/some/directory/*filename*'

아래 명령의 출력을 비교하십시오.

$ locate tmpfile
/usr/lib64/perl5/auto/POSIX/tmpfile.al
/usr/share/man/fr/man3/tmpfile.3.gz
/usr/share/man/ja/man3/tmpfile.3.gz
/usr/share/man/man3/tmpfile.3.gz
/usr/share/man/man3p/tmpfile.3p.gz
$
$ locate '/usr/lib64/*tmpfile*'
/usr/lib64/perl5/auto/POSIX/tmpfile.al
$ 

locate /usr/lib*tmpfile* 동일한 결과를 제공합니다.


3
+1 정답입니다. 와일드 카드를 포함하면 경계가 고정됩니다. 위의 예에서 $ locate '/usr/lib64/*tmpfile'결과가 반환되지 않습니다.
xofer

간단한 와일드 카드가 제공 할 수있는 것보다 더 많은 제어 기능을 원할 경우 항상 locatethrough 결과를 파이프 할 수 있습니다 grep.
Ladadadada

5

다음을 사용하여 특정 디렉토리의 slocate 데이터베이스를 작성하십시오.

updatedb -U /path/to/directory

다음으로 검색하십시오.

locate <search_string>

최신 정보

이것은 젠투 시스템에서 잘 작동하지만 CentOS에는 -U옵션 이 없습니다 . 따라서 대신 아래에서 시도해 볼 수 있습니다.

다음을 사용하여 데이터베이스를 빌드하십시오.

# updatedb -U /path/to/dir -o dir_locate.db

그리고 검색 :

# locate -d dir_locate.db <search_string>

3
"locate -U"에 잘못된 옵션 오류가 발생합니다. "updatedb -U"를 의미한다고 생각하십니까? 또한 다른 디렉토리를 검색하려면 mlocate.db 재 구축 (updatedb)이 필요합니다.
gharper

아, 젠투에서는 잘 작동하지만 CentOS에는이 옵션이 포함되어 있지 않습니다.
quanta

다운 투표? 의견을 남겨주시겠습니까?
quanta

다음과 같은 오류가 발생하면 linux에서 updatedb 명령을 일반 사용자로 사용하는 방법을updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted 확인하십시오 .
kenorb

2

내가 생각할 수있는 가장 간단한 대답은

locate search_term | grep "/specified/directory"

더 나은 해결책은 "찾기"및 해당 경로 옵션을 사용하는 것입니다 ...


0

가장 쉬운 방법은 다음 예제와 같습니다.

updatedb -o ~/tmp.db -l0 -U $PWD
locate   -d ~/tmp.db "foo"

$PWD특정 디렉토리로 변경하십시오 .

위의 예는 특정 디렉토리에 대해서만 로컬 데이터베이스를 작성합니다.

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