Linux / 명령어 / locate - 파일 이름 색인에서 빠르게 경로 검색
locate는 미리 만들어 둔 파일 이름 데이터베이스에서 경로를 검색합니다. 파일 시스템을 매번 순회하지 않아 빠르지만, 색인이 갱신되기 전의 새 파일이나 삭제된 파일 상태는 정확히 반영되지 않을 수 있습니다.
이 글에서는 locate의 기본 문법과 주요 옵션, 실제 사용 예제, 관련 명령과의 차이, 사용할 때 주의할 점을 설명합니다.
locate 명령어란?
배포판에 따라 plocate, mlocate 또는 GNU locate가 명령을 제공합니다. 데이터베이스는 보통 updatedb와 예약 작업으로 갱신되며, 권한 필터와 기본 데이터베이스 경로는 구현 및 시스템 설정에 따라 다릅니다.
기본 문법
locate [옵션] 패턴 ...
옵션과 세부 동작은 구현과 버전에 따라 달라질 수 있습니다. 현재 시스템에서는 locate --help와 man locate으로 설치된 명령의 설명을 확인하세요.
locate 기본 사용법
이름 일부로 검색하기
패턴이 경로 전체의 일부와 일치하는 결과를 빠르게 찾습니다.
locate nginx.conf
대소문자 무시하기
지원되는 구현에서 -i로 대소문자를 구분하지 않습니다.
locate -i readme.md
현재 존재하는 경로만 표시하기
-e 또는 --existing은 결과 경로가 현재 존재하는지 추가로 확인합니다.
locate -e '*.service'
빠른 검색 결과가 최신 파일을 보장하지 않는 이유
locate는 현재 디스크를 직접 훑는 대신 미리 만든 경로 색인을 검색합니다. 색인에 포함된 시스템의 예시:
locate /etc/passwd
예시 출력:
/etc/passwd
새 파일은 색인 갱신 전까지 안 보일 수 있고 이미 삭제된 파일이 남아 보일 수도 있습니다. 결과가 없을 때는 색인 상태와 검색 패턴을 확인하고, 현재 존재 여부가 중요하면 find로 다시 검사하세요.
주요 옵션
| 옵션 | 설명 |
|---|---|
-i |
대소문자를 구분하지 않고 검색합니다. |
-e, --existing |
현재 존재하는 파일만 표시합니다. |
-b, --basename |
전체 경로가 아니라 마지막 파일명 부분만 검색합니다. |
-c, --count |
결과 대신 일치 개수를 출력합니다. |
-l N, --limit N |
최대 결과 수를 제한합니다. |
-r REGEXP, --regexp REGEXP |
정규 표현식으로 검색합니다. |
-d DBPATH |
검색할 데이터베이스를 지정합니다. |
실전 활용 예제
정확한 파일명에 가깝게 찾기
basename 검색과 패턴을 조합해 디렉터리명 일치를 줄입니다.
locate -b '\hosts'
결과 수 제한하기
너무 많은 결과를 출력하기 전에 개수를 세거나 상한을 둡니다.
locate -c cache locate -l 20 cache
색인 갱신하기
시스템 전체 데이터베이스 갱신에는 권한과 시간이 필요할 수 있습니다. 배포판의 예약 작업 정책을 먼저 확인합니다.
sudo updatedb
locate와 관련 명령 비교
| 명령 | 주요 역할 | 적합한 상황 |
|---|---|---|
locate |
색인 기반 이름 검색 | 빠른 경로 탐색 |
find |
현재 파일 시스템 직접 검색 | 최신 상태와 다양한 조건 |
which |
PATH 실행 파일 검색 | 실행 경로 확인 |
whereis |
프로그램 관련 표준 경로 검색 | 바이너리·소스·매뉴얼 찾기 |
사용할 때 주의할 점
결과는 최신 상태가 아닐 수 있습니다
색인 이후 생성·이동·삭제된 경로는 누락되거나 남아 있을 수 있습니다.
권한과 개인정보를 고려합니다
데이터베이스 구축 방식에 따라 다른 사용자의 경로 노출을 제한하는 설정이 적용됩니다.
구현별 옵션을 확인합니다
plocate, mlocate, GNU locate는 공통 기능이 많지만 세부 옵션과 패턴 해석이 다를 수 있습니다.
FAQ
locate 명령이 설치되어 있지 않은 이유는 무엇인가요?
일부 배포판은 기본 설치하지 않습니다. 패키지 이름이 plocate 또는 mlocate일 수 있습니다.
방금 만든 파일이 검색되지 않는 이유는요?
아직 데이터베이스가 갱신되지 않았기 때문일 수 있습니다. 즉시 확인하려면 find를 사용하세요.
updatedb는 꼭 sudo로 실행해야 하나요?
시스템 전체 색인은 보통 관리자 권한이 필요하지만 구현과 설정에 따라 사용자 데이터베이스를 만들 수도 있습니다.
삭제한 파일이 결과에 남는 이유는요?
오래된 색인 항목입니다. -e로 존재 여부를 확인하거나 데이터베이스를 갱신하세요.









