리눅스 / 명령어 / which, whereis, locate / 명령어 위치 찾기

Linux에서 which는 주로 PATH에 있는 실행 파일을 찾고, whereis는 정해진 위치에서 실행 파일과 매뉴얼 등의 관련 파일을 찾습니다. locate는 미리 만든 파일 이름 데이터베이스를 검색하므로 일반 파일도 빠르게 찾을 수 있지만 결과가 현재 상태와 다를 수 있습니다.

어떤 명령을 사용할까요?

  • 실행 파일 경로: which find 또는 셸의 command -v find로 현재 환경에서 찾을 수 있는 명령을 확인합니다.
  • 실행 파일과 매뉴얼: whereis find로 프로그램과 관련 매뉴얼·소스가 알려진 위치에 있는지 확인합니다.
  • 파일 이름으로 검색: locate는 색인된 경로를 검색하며, 최신 상태가 필요하면 find로 지정한 디렉터리를 직접 검색할 수 있습니다.

검색 범위와 결과는 배포판, 설치된 프로그램, 사용자 권한과 설정에 따라 달라집니다. 아래의 출력 경로는 설명을 위한 예시이며 모든 시스템에서 같지는 않습니다.

which와 command -v로 실행 파일 확인

PATH는 실행할 명령을 찾을 때 검색하는 디렉터리 목록을 담은 환경 변수입니다. 다음 명령은 find라는 실행 파일의 경로를 찾습니다.

which find

예를 들어 /usr/bin/find가 출력될 수 있습니다. 경로가 출력되지 않으면 프로그램 설치 여부와 PATH를 확인하세요. 다만 which의 구현과 별칭 처리 방식은 시스템마다 다르므로, 현재 셸이 이름을 어떻게 해석하는지 알아볼 때는 셸 내장 명령도 확인하는 것이 좋습니다.

command -v find
type -a find

Bash의 command -v는 명령을 호출하는 데 사용될 이름이나 경로를 보여 주고, type -a는 해당 이름의 별칭·함수·내장 명령·실행 파일 등 찾은 항목을 보여 줍니다. 셸 내장 명령이나 별칭에는 별도의 실행 파일 경로가 없을 수 있습니다. Bash 내장 명령 설명에서 동작을 확인할 수 있습니다.

whereis로 관련 파일 찾기

whereis는 프로그램의 실행 파일, 소스와 매뉴얼 파일을 표준 위치 및 설정된 검색 경로에서 찾습니다.

whereis find

결과는 find: 뒤에 찾은 경로를 나열합니다. 실행 파일만 보고 싶으면 whereis -b find, 매뉴얼 파일만 보고 싶으면 whereis -m find를 사용할 수 있습니다. 해당 파일이 설치되지 않았거나 검색 위치 밖에 있으면 표시되지 않으므로, 출력이 없다고 시스템 전체에 파일이 없다고 단정할 수는 없습니다.

사용 중인 util-linux의 whereis -l은 검색 위치를 보여 줍니다. 자세한 검색 범위는 util-linux whereis 설명서를 참고하세요.

locate로 파일 이름 검색하기

locate는 updatedb가 만든 데이터베이스에서 이름이나 경로가 일치하는 항목을 찾습니다. 예를 들어 다음 명령은 색인된 경로 중 find가 들어간 항목을 찾습니다.

locate find

출력에는 실행 파일뿐 아니라 매뉴얼이나 다른 이름의 파일도 포함될 수 있습니다. 설치된 구현에 따라 옵션이 다르므로 locate --help를 먼저 확인하세요. 예를 들어 plocate에서는 다음과 같이 결과를 최대 10개로 제한할 수 있습니다.

locate -l 10 find

데이터베이스가 오래되었다면 새 파일은 빠지고 이미 삭제된 경로가 남을 수 있습니다. 검색 대상에서 제외된 경로와 사용자의 접근 권한도 결과에 영향을 줍니다. 배포판이 주기적으로 데이터베이스를 갱신할 수 있으며, 시스템 관리가 허용되는 환경에서는 sudo updatedb로 직접 갱신할 수 있습니다. 시스템 전체를 검색하는 작업이므로 실행 전 관리 정책을 확인하세요. plocate 공식 문서에서 구현과 관련 매뉴얼을 확인할 수 있습니다.

설치 여부와 최신 파일 확인

locate가 설치되지 않았을 수 있습니다. 예를 들어 Ubuntu 24.04의 plocate 패키지를 사용할 수 있으며, 관리자 권한과 패키지 저장소 접근이 되는 환경에서 다음과 같이 설치할 수 있습니다.

sudo apt update
sudo apt install plocate

다른 배포판이나 버전에서는 패키지 이름과 갱신 방식이 다를 수 있으므로 해당 배포판의 문서를 확인하세요. 설치 후 데이터베이스가 아직 없거나 최신 상태가 아니라면 관리자가 초기화·갱신해야 할 수 있습니다.

데이터베이스를 기다리지 않고 홈 디렉터리에서 현재 파일을 직접 찾으려면 다음과 같이 합니다.

find "$HOME" -name 'example.txt'

이 명령은 지정한 디렉터리 트리를 직접 탐색하므로 locate보다 시간이 오래 걸릴 수 있으며, 접근 권한이 없는 디렉터리는 검색하지 못합니다. example.txt는 찾으려는 실제 파일 이름으로 바꾸고, 따옴표를 유지해 검색 패턴이 셸에서 미리 확장되지 않게 합니다.