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 강좌 / 파일 권한 읽고 바꾸기와 sudo 사용법

Linux 강좌 / 파일 권한 읽고 바꾸기와 sudo 사용법

리눅스 파일과 디렉터리의 읽기·쓰기·실행 권한을 해석하고 chmod로 실습 파일의 권한을 바꿉니다. sudo의 사용 범위와 권한 오류를 진단하는 순서도 설명합니다.

Linux / 명령어 / hostnamectl - 호스트 이름과 시스템 정보 확인·변경

Linux / 명령어 / hostnamectl - 호스트 이름과 시스템 정보 확인·변경

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

Linux / 명령어 / dmesg - 커널 메시지와 부팅 로그 확인

Linux / 명령어 / dmesg - 커널 메시지와 부팅 로그 확인

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

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

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

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

Linux / 명령어 / jobs - 현재 셸의 작업 목록 확인

Linux / 명령어 / jobs - 현재 셸의 작업 목록 확인

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

Linux / 명령어 / sync - 버퍼에 남은 쓰기 데이터 저장 요청

Linux / 명령어 / sync - 버퍼에 남은 쓰기 데이터 저장 요청

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

Linux / 명령어 / lscpu - CPU 아키텍처와 코어 정보 확인

Linux / 명령어 / lscpu - CPU 아키텍처와 코어 정보 확인

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

Linux / 명령어 / pacman - Arch Linux에서 패키지 설치와 전체 시스템 업데이트

Linux / 명령어 / pacman - Arch Linux에서 패키지 설치와 전체 시스템 업데이트

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

Linux / 명령어 / rm - 파일과 디렉터리 삭제

Linux / 명령어 / rm - 파일과 디렉터리 삭제

Linux rm 명령어로 파일과 디렉터리를 삭제하는 방법을 설명합니다. 재귀 삭제, 대화형 확인, 루트 보호 옵션과 복구가 어려운 삭제를 안전하게 다루는 원칙을 정리합니다.

Linux / 명령어 / umask - 새 파일·디렉터리 기본 권한 제한

Linux / 명령어 / umask - 새 파일·디렉터리 기본 권한 제한

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