LOCATE(1)

명칭
locate - 파일명을 고속으로 검색한다

서식
locate [-Scims] [-l limit] [-d database] pattern ...

해설
locate (은)는 데이타베이스를 사용해 모든 패스를 검색해, pattern 에 매치 한 파일명을 표시합니다. 데이타베이스는 정기적으로(보통은 주 1회나 매일) 재구축 됩니다. 데이타베이스의 내용은, 전유저가 액세스 할 수 있다 모든 파일명입니다.

pattern 에는 쉘로 사용되는 와일드 카드 “(*” “”? “\” “[” “”]) (을)를 사용할 수가 있습니다. 그 경우, 와일드 카드를 쉘로 해석되지 않게 이스케이프 하지 않으면 안됩니다. 직전에 backslash (“\”) (을)를 붙이면(자), 어떠한 캐릭터도, 그 캐릭터가 가지는 특수한 의미가 지워집니다. slash (“/”) 도 포함해 어떠한 캐릭터도 특수한 의미를 가지지 않습니다.

또, 와일드 카드를 포함하지 않는 패턴 (“foo”) (을)를 지정했을 경우, locate 하 “*foo*” 하지만 지정된 것이라고 해석합니다.

역사적인 사정으로, 이전의 locate (은)는 32 에서 127 까지의 캐릭터 코드 밖에 취급할 수가 없었습니다. 현재의 처리 방법에서는 개행 (‘\n’) (와)과 눌 (‘\0’) 이외의 캐릭터 코드를 처리할 수 있습니다. 지금까지 서포트되고 있던 프레인 ASCII만으로 구성되었다 파일명에 대해서는, 사용하는 메모리의 양은 증가하고 있지 않습니다. 32 미만, 혹은 127 을 넘는 캐릭터 코드를 포함한 파일명 에 대해서는, 2 바이트를 사용해 격납됩니다.

사용 가능한 옵션은 이하대로입니다.

-S  데이타베이스의 통계를 표시해 종료합니다.

-c  통상의 출력을 실시하지 않고, 매치 한 파일명의 수를 표시합니다.

-d database
    디폴트의 데이타베이스를 사용하지 않고, database (을)를 사용해 검색합니다. 여러 차례 -d (을)를 지정하는 것으로, 복수의 데이타베이스를 사용할 수가 있습니다.

    옵션의 database (은)는 코론으로 단락짓는 것으로 복수의 데이타베이스를 사용할 수가 있습니다. 또, 1개의 코론은 디폴트의 데이타베이스를 나타냅니다.

        $ locate -d $HOME/lib/mydb: foo

    하 “foo” (을)를 패턴으로서 최초로 $HOME/lib/mydb (을)를, 다음에 /var/db/locate.database (을)를 검색합니다.

        $ locate -d $HOME/lib/mydb::/cdrom/locate.database foo

    (은)는, “foo” (을)를 패턴으로서 $HOME/lib/mydb, /var/db/locate.database, /cdrom/locate.database 의 차례로 검색합니다.

        $ locate -d db1 -d db2 -d db3 pattern

    하

        “$ locate -d db1:db2:db3 pattern”

    (이)나

        “$ locate -d db1:db2 -d db3 pattern”

    (와)과 같습니다.

    데이타베이스의 이름으로서 - (을)를 지정했을 경우, 표준 입력으로부터 읽어들입니다. 예를 들면, 다음과 같이 데이타베이스를 압축해 사용할 수가 있습니다.

        $ zcat database.gz | locate -d - pattern

    이것은, 고속의 CPU, 적은 RAM, 늦은 I/O 를 가지는 컴퓨터를 사용하고 있는 경우에 편리합니다. 이 경우, 1개의 패턴 밖에 지정할 수가 없습니다.

-i  패턴과 데이타베이스의 사이에서의 대문자와 소문자의 차이를 무시합니다.

-l number
    매치 한 파일명의 표시를, 최대 number 개에 제한합니다.

-m  stdio(3) 프로그램 라이브러리의 대신에 mmap(2) 프로그램 라이브러리를 사용합니다. 이것은 디폴트의 동작입니다. 대부분의 경우로, 고속으로 동작합니다.

-s  mmap(2) 프로그램 라이브러리의 대신에 stdio(3) 프로그램 라이브러리를 사용합니다.

관련 파일
/var/db/locate.database
    locate 데이타베이스
/usr/libexec/locate.updatedb
    locate 데이타베이스를 갱신하기 위한 스크립트
/etc/periodic/weekly/310.locate
    데이타베이스 재구축을 기동하는 스크립트

환경 변수
LOCATE_PATH
    데이타베이스의 패스를 지정합니다. 공문자의 경우는 무효입니다. -d 옵션이 지정되었을 경우도 무효가 됩니다.

관련 항목
find(1), whereis(1), which(1), fnmatch(3), locate.updatedb(8) Woods, James A., 1983, Finding Files Fast, ;login, 8:1, pp. 8-10.

버그
locate 하지만 실제로는 존재하는 파일을 리스트업 할 수 없는 경우나, 반대로, 벌써 삭제되었음이 분명한 파일을 리스트업 해 버리는 경우가 있습니다. 이것은 locate 하지만 /etc/periodic/weekly/310.locate 스크립트로 주에 한 번 갱신되는 데이타베이스로부터 정보를 얻고 있기 (위해)때문입니다. 할 수 있어 얼마 되지 않은 파일의 검색에는 find(1) (을)를 사용해 주세요.

locate 데이타베이스 파일의 소유자는 “nobody” 되고 있습니다. find(1) (은)는 유저명 “nobody” , 그룹명 “nobody” , 혹은 그 외의 유저에 대해서 리드 속성이 없다 디렉토리를 찾아냈을 경우, 그 디렉토리의 검색을 스킵 합니다. 예를 들면, 유저의 홈 디렉토리에 읽어들여 속성이 없었을 때는, 그 유저의 모든 파일은 데이타베이스에 등록되지 않습니다.

locate 데이타베이스의 내용에 대해, 바이트 순서의 문제가 해결되고 있지 않습니다. 바이트 순서가 다른 컴퓨터끼리에서는, 데이타베이스의 공유를 할 수 없습니다. 양쪽 모두의 아키텍쳐로 int 의 사이즈가 같은 경우, locate (은)는 호스트의 바이트 순서, 네트워크의 아르바이트 순서의 달라 대응합니다. 그 때문에, FreeBSD/i386 (little endian) 위에서 locate SunOS/sparc (빅 endian) 상에서 구축되었다 데이타베이스를 사용할 수가 있습니다.

역사
locate 하 4.4BSD (으)로부터 등장했습니다. FreeBSD 2.2 그리고, 새롭게 많은 기능을 덧붙일 수 있었습니다.