Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

파일을 실제 디렉터리에서 조건으로 찾으려면 find, 미리 만든 파일 이름 색인에서 빠르게 찾으려면 locate를 사용합니다. 실행할 명령의 위치가 궁금할 때는 which 또는 whereis를 쓰되, 별칭·함수까지 포함해 셸이 무엇을 실행할지 알려면 Bash의 type이나 command -v가 더 적합합니다. 이 강좌는 찾으려는 대상에 따라 도구를 구분합니다.

find로 현재 파일 시스템 검색하기

find는 지정한 시작 디렉터리 아래를 순회하며 이름, 종류, 크기 등 조건에 맞는 항목을 찾습니다. 다음 실습은 Bash와 GNU find를 가정합니다. ~/linux-course-11-practice가 이미 있다면 다른 이름을 고르세요. 첫 mkdir가 실패하면 뒤의 명령을 실행하지 마세요.

mkdir ~/linux-course-11-practice
cd ~/linux-course-11-practice
mkdir drafts archive
touch drafts/notes.txt drafts/todo.md archive/old.txt

pwd로 실습 위치를 확인한 다음 .txt로 끝나는 일반 파일을 찾아 보세요. 따옴표는 셸이 *.txt를 먼저 펼치지 못하게 하여 패턴을 find에 그대로 전달합니다. -maxdepth 2는 시작점에서 두 단계까지만 살펴보는 GNU 옵션입니다.

pwd
find . -maxdepth 2 -type f -name '*.txt'

출력 순서는 파일 시스템에 따라 다르지만 두 경로가 나와야 합니다.

./drafts/notes.txt
./archive/old.txt

-type f는 일반 파일을, -name은 이름 패턴을 지정합니다. 대소문자를 무시하는 이름 검색에는 GNU find의 -iname을 사용할 수 있습니다. 실제 운영 디렉터리에서는 권한이 없는 하위 경로 때문에 오류가 날 수 있으며, find가 출력한 경로만으로 파일 내용을 읽을 권한까지 확인한 것은 아닙니다.

locate로 파일 이름 색인 검색하기

locate는 현재 트리를 순회하는 대신 미리 구축된 파일 이름 데이터베이스를 검색합니다. 데이터베이스가 준비되어 있다면 넓은 범위의 이름 검색이 빠르지만, 마지막 갱신 뒤 생긴 파일은 아직 검색되지 않을 수 있고 이미 지운 이름이 잠시 남을 수도 있습니다. 구현과 설정에 따라 권한이 없는 경로의 표시 방식도 다릅니다.

locate hosts

검색 결과에 /etc/hosts가 포함될 수 있지만 다른 경로도 나올 수 있습니다. locate가 없거나 데이터베이스가 아직 없다면 설치된 배포판의 제공 도구와 색인 갱신 방식을 확인하세요. 예를 들어 GNU Findutils의 updatedb는 색인을 갱신하지만, 실행 위치와 권한은 시스템 설정에 따릅니다. 바로 지금 존재하는 파일을 확실히 확인하려면 find나 ls로 다시 검사하세요.

실행 파일의 경로 확인하기

which는 보통 PATH 환경 변수의 검색 경로에서 실행 파일을 찾습니다. 예를 들어 다음 명령은 ls 실행 파일의 경로를 보여 줄 수 있습니다. /usr/bin/ls나 /bin/ls처럼 결과는 시스템에 따라 다릅니다.

which ls

다만 which의 구현은 시스템마다 다르고, 셸 별칭이나 함수가 실제 입력을 가로채는 경우까지 같은 방식으로 반영한다고 가정하면 안 됩니다. Bash에서 현재 셸이 명령 이름을 어떻게 해석하는지 확인할 때는 다음 명령이 더 직접적입니다.

type -a ls
command -v ls

type -a는 같은 이름의 별칭·함수·내장 명령·실행 파일 후보를 보여 줄 수 있고, command -v는 셸에서 그 이름을 찾을 수 있는지 확인할 때 유용합니다. 출력 형태는 현재 셸 설정에 따라 달라집니다.

whereis로 바이너리와 매뉴얼 위치 살펴보기

whereis는 명령 이름과 관련된 실행 파일, 소스, 매뉴얼 위치를 알려 주는 도구입니다. 예를 들어 whereis ls는 바이너리 경로와 매뉴얼 경로를 함께 보여 줄 수 있습니다. 모든 항목이 설치되어 있다는 뜻은 아니며, 탐색 위치도 구현과 설정에 따라 달라집니다.

whereis ls
궁금한 것 우선 사용할 도구 주의점
현재 디렉터리 트리의 조건에 맞는 파일 find 범위와 권한에 따라 검색 시간·오류가 달라짐
색인에 기록된 파일 이름 locate 색인이 오래되면 실제 상태와 다를 수 있음
PATH의 실행 파일 경로 which 별칭·함수까지의 셸 해석과 구별
셸이 명령 이름을 해석하는 방식 type -a, command -v 현재 셸의 설정에 의존
명령의 바이너리·매뉴얼 위치 whereis 검색 대상과 결과는 환경에 의존

파일 이름 검색과 명령 해석 검색은 다른 문제입니다. find로 ls라는 파일을 찾았다고 해서 현재 셸에서 입력한 ls가 반드시 그 파일을 실행하는 것은 아닙니다. 혼동될 때는 type -a ls의 결과를 확인하세요.

공식 문서

GNU Findutils 매뉴얼에서 find와 locate를, GNU Bash 내장 명령 문서에서 type과 command를 확인할 수 있습니다. whereis의 구현별 옵션은 설치된 시스템의 man whereis를 참고하세요.

같은 카테고리의 다른 글
Linux / 명령어 / truncate - 파일 크기 줄이기와 늘리기

Linux / 명령어 / truncate - 파일 크기 줄이기와 늘리기

Linux truncate 명령어로 파일 크기를 지정하거나 늘리고 줄이는 방법을 설명합니다. 희소 파일, 상대 크기 조정, 기준 파일과 같은 크기로 맞추는 방법 및 데이터 손실 주의점을 알아봅니다.

Linux / 명령어 / basename - 경로에서 마지막 이름 추출

Linux / 명령어 / basename - 경로에서 마지막 이름 추출

Linux basename 명령어로 경로에서 마지막 파일명이나 디렉터리 이름을 추출하고 접미사를 제거하는 방법을 설명합니다. 여러 경로와 안전한 셸 스크립트 처리 방법도 정리합니다.

Linux / 명령어 / apt-get - APT 패키지 작업을 스크립트와 명령행에서 실행

Linux / 명령어 / apt-get - APT 패키지 작업을 스크립트와 명령행에서 실행

Linux apt-get 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / rsync - 파일·디렉터리의 변경분 동기화

Linux / 명령어 / rsync - 파일·디렉터리의 변경분 동기화

Linux rsync 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / history - 명령어 실행 기록 확인

Linux / 명령어 / history - 명령어 실행 기록 확인

Bash history 명령어로 이전 명령을 조회·검색·재실행·삭제하는 방법을 설명합니다. ~/.bash_history, HISTCONTROL, HISTTIMEFORMAT, histappend와 여러 터미널 기록 동기화 방법도 함께 정리합니다.

Linux / 명령어 / touch - 파일 생성과 타임스탬프 변경

Linux / 명령어 / touch - 파일 생성과 타임스탬프 변경

Linux touch 명령어로 빈 파일을 만들고 접근 시각과 수정 시각을 변경하는 방법을 설명합니다. 기준 파일의 시간을 복사하는 방법과 스크립트에서 사용할 때의 주의점도 알아봅니다.

Linux / 명령어 / fmt - 일반 텍스트 문단의 줄바꿈 조정

Linux / 명령어 / fmt - 일반 텍스트 문단의 줄바꿈 조정

Linux fmt 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / bunzip2 - bzip2 압축 파일 풀기

Linux / 명령어 / bunzip2 - bzip2 압축 파일 풀기

Linux bunzip2 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / which - PATH에서 실행 파일 경로 찾기

Linux / 명령어 / which - PATH에서 실행 파일 경로 찾기

Linux which 명령어로 PATH에서 실행 파일 경로를 찾는 방법을 설명합니다. type과 command -v의 차이, 별칭·함수 확인과 스크립트 이식성도 정리합니다.

Linux / 명령어 / uptime - 시스템 가동 시간과 부하 확인

Linux / 명령어 / uptime - 시스템 가동 시간과 부하 확인

Linux uptime 명령어의 가동 시간과 1분·5분·15분 평균 부하를 읽는 방법을 설명합니다. CPU 개수, I/O 대기와 함께 부하를 진단하는 순서도 정리합니다.