tail head cat sleep
QR code linking to this page

Man page  — LOCATE

명칭

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., ;login, pp. 8-10, Finding Files Fast, 8:1, 1983.

버그

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

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

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

역사

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

LOCATE (1) June 6, 1993

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

To err is human...to really foul up requires the root password.