Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

리눅스 터미널에서 파일을 찾는 방법은 여러 가지가 있으며, 그중에서도 find, locate, which, whereis 명령어가 가장 널리 사용됩니다. 이 글에서는 이 네 가지 검색 명령어의 특징과 공통점, 차이점을 자세히 살펴보겠습니다.

1. find – 강력한 실시간 파일 검색

지정한 디렉터리 내에서 파일을 검색하는 가장 기본적인 방법은 find 명령어를 사용하는 것입니다. 검색 대상 디렉터리를 명시하지 않으면 현재 디렉터리를 기준으로 검색이 진행됩니다.

아래 스크린샷은 현재 디렉터리(.)에서 확장자가 .txt로 끝나는 모든 파일명을 검색하는 예시입니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

find는 단순히 파일 이름뿐만 아니라 타임스탬프, 파일 권한, 파일 크기, 파일 유형, 소유자 등 다양한 조건으로 검색할 수 있습니다. 또한 정규 표현식을 활용하면 검색 조건을 더욱 세밀하게 제어할 수 있습니다. 자세한 사용법은 find 명령어 관련 문서를 참고하세요.

2. locate – 데이터베이스 기반 초고속 검색

locate 역시 파일 이름으로 파일을 찾는 명령어입니다. 앞서 소개한 find가 지정한 디렉터리를 직접 탐색하는 것과 달리, locate는 "/var/lib/mlocate/mlocate.db" 위치에 있는 "mlocate.db"라는 데이터베이스를 대상으로 검색합니다. 이 데이터베이스는 cron 유틸리티에 의해 매일 새벽 자동으로 갱신됩니다.

시스템의 모든 파일과 디렉터리 목록이 이미 정리되어 있는 데이터베이스를 조회하기 때문에, locatefind보다 훨씬 빠른 검색 속도를 자랑합니다.

locate 뒤에 파일 이름을 입력하면 해당 파일이 존재하는 절대 경로가 출력됩니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

예를 들어 홈 디렉터리에 스크립트를 하나 생성했다고 가정해 보겠습니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

방금 생성한 스크립트를 locate로 검색하면 아무런 결과도 출력되지 않습니다.

locate myscript
리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

cron은 데이터베이스를 매일 새벽에만 갱신하기 때문에, 낮 시간에 시스템에 추가된 파일은 데이터베이스에 아직 반영되어 있지 않습니다. 이 경우 updatedb 명령어로 데이터베이스를 수동으로 갱신해야 합니다.

sudo updatedb

갱신 후 다시 스크립트를 검색하면 정상적으로 파일 위치를 찾을 수 있습니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

3. which – 실행 파일 경로 확인

파일 검색 명령어를 살펴봤으니, 이번에는 시스템에 설치된 실행 파일의 절대 경로를 찾는 데 유용한 which 명령어를 알아보겠습니다.

하나의 실행 파일/스크립트/바이너리가 시스템의 여러 위치에 존재할 수 있습니다. which는 $PATH와 $MANPATH 환경 변수에 지정된 디렉터리를 검색하여 지정한 실행 파일의 존재 여부를 확인합니다.

옵션 없이 실행하면 which는 해당 실행 파일에 대해 발견된 첫 번째 절대 경로만 표시합니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

-a 옵션을 사용하면 발견된 모든 절대 경로를 출력합니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

실행 파일 이름을 연달아 나열하면 여러 실행 파일의 절대 경로를 한 번에 확인할 수 있습니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

4. whereis – 바이너리, 소스 코드, 매뉴얼까지 한 번에

whereis는 실행 파일과 관련된 세 가지 정보를 한꺼번에 제공하는 명령어입니다.

  • 바이너리의 절대 경로
  • 해당 바이너리의 소스 코드가 존재하는 절대 경로
  • 해당 바이너리의 매뉴얼(man page)이 존재하는 절대 경로
리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

예를 들어 "bzgrep"의 경우 바이너리는 "/bin"에, 매뉴얼은 "/usr/share/man/man1"에 존재하며, 소스 코드는 시스템에 없습니다.

-b 옵션을 사용하면 바이너리의 절대 경로만 검색합니다. -B 옵션 뒤에 디렉터리를 지정하면 해당 디렉터리에서만 검색을 수행하고, -f 옵션 뒤에는 정보를 얻고자 하는 바이너리 이름들을 나열합니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

마찬가지로 -s-m 옵션을 사용하면 각각 소스 코드 또는 매뉴얼만 검색할 수 있으며, -S-M 옵션 뒤에 디렉터리 이름을 지정하면 소스 코드와 매뉴얼을 검색할 디렉터리를 지정할 수 있습니다.

-l 옵션을 사용하면 whereis가 검색에 사용하는 모든 디렉터리의 절대 경로 목록을 상세하게 확인할 수 있습니다.

리눅스 파일 검색 명령어 완벽 가이드: find, locate, which, whereis

마치며

터미널에서 파일을 찾을 수 있는 도구는 결코 부족하지 않습니다. 이 글을 통해 리눅스 시스템에서 유용하게 쓰이는 네 가지 검색 도구의 특징과 차이점을 잘 이해하셨기를 바랍니다. 더 자세한 사용법이 필요하다면 각 명령어의 매뉴얼 페이지(man page)를 참고하시기 바랍니다.