리눅스 파일 찾기 총정리 - find, locate, gerp, fd, which, whereis

리눅스에서 파일, 또는 경로를 찾기 위해 사용하는 다양한 커맨드 사용 방법을 설명합니다. find, locate, grep+find, fd, fdfind, fdclone, which, whereis 명령어의 사용 방법을 알려줍니다.

리눅스에서 원하는 파일을 빠르게 찾으려면 여러 가지 명령어를 함께 활용해야 합니다. 파일을 빨리 찾을 수 있으면 작업 효율이 좋아지고, 파일 관리를 훨씬 쉽게 할 수 있습니다.

리눅스 환경에서 주로 사용하는 명령어는 용도에 따라 여려가지가 있습니다. 주로 사용하는 검색 명령어는 다음과 같습니다.

리눅스에서 파일을 빠르게 찾기 위한 방법은 매우 다양합니다. 많이 명령어들은 다음과 같은 것들이 있습니다.


- find: 디렉토리와 파일을 재귀 검색. 타겟 디렉토리 하위 디렉토리까지 모두 검색
- locate: 미리 생성한 데이터베이스를 활용한 빠른 검색. 인덱스를 사용하기 때문에 속도가 빠름.
- grepfind 조합: 파일 안의 특정 내용을 검색.
- fd: 빠르고 사용하기 쉬운 대체 검색 도구.
- which: 실행 파일의 경로를 검색.
- whereis: 명령어의 바이너리, 소스, 매뉴얼 페이지 검색.

각각의 명령어들을 차례대로 알아보겠습니다.

1.find 명령어

기본 사용법:

find 명령어는 디렉터리 트리를 순회하면서 파일과 디렉터리를 검색합니다. 찾으려는 특정 파일의 이름을 지정하여 다음과 같이 검색할 수 있습니다.

find [검색할 디렉터리] -name [파일명]

"/var" 디렉토리와 그 하위 디렉토리에서 "index.html" 파일을 찾으려고 한다면 다음처럼 명령어를 입력합니다.

> find /var -name "index.html"
./wp-content/themes/twentytwentytwo/templates/index.html
./wp-content/themes/twentytwentyfour/templates/index.html
./wp-content/themes/twentytwentythree/templates/index.html

2.locate 명령어

기본 사용법

locate 명령어는 미리 생성된 데이터베이스를 사용하여 파일을 빠르게 검색하는 도구입니다. 데이터베이스는 `updatedb` 명령어를 통해 주기적으로 갱신해야 최신의 데이터베이스가 유지됩니다.

locate 명령어는 빠른 파일 검색을 필요로 하는 파일 서버 운용 환경이 아니면 권장하지 않습니다. locate 명령어의 주요 특징은 다음과 같습니다.

  • /cat/lib/mlocate/mlocate.db 파일에 관련 정보를 담아서 관리합니다.
  • sudo updatedb 명령어를 실행 후 검색을 해야 최신 파일 정보를 검색합니다.
  • 일부 리눅스 배포판에서는 지원되지 않습니다.(우분투는 미지원하며 plocate 커맨드 패키지를 별도로 설치해야 합니다.)

locate 인덱스 데이터베이스를 사용하면 디스크 공간을 추가로 사용하게 됩니다.

locate [파일명]

3. grepfind 명령어 조합

기본 사용법:

grep 명령어는 파일 내의 특정 문자열을 검색하는 데 유용합니다. 이를 `find` 명령어와 조합하면 특정 내용을 포함하는 파일을 검색할 수 있습니다.

find [검색할 디렉터리] -type f -exec grep -l "[찾을 문자열]" {} +

검색 디렉토리 안에 있는 파일 중 접근 권한이 없는 파일이 있으면 "Permission Denied" 에러가 쏱아지므로 모든 파일을 다 찾으려면 루트 권한으로 검색해야 합니다.

문자열 "wpuser" 가 포함된 파일 목록을 출력하려면 다음처럼 명령어를 입력합니다.

> sudo find /var -type f -exec grep -l "wpuser" {} +
/var/lib/mysql/undo_001
/var/lib/mysql/undo_002
/var/lib/mysql/mysql.ibd
/var/log/journal/b024d075d734431fb76f01fc7e1b1e97/user-1000.journal
/var/log/auth.log
/var/www/html/wp-config.php

4. fdfind 명령어

기본 사용법:

`fd`는 `find` 명령어의 빠르고 사용하기 쉬운 대체 명령어입니다. 별도로 설치해야 하지만, 매우 빠른 검색 속도를 자랑합니다. fd는 "File and Directory"의 줄임말입니다.

fdfind [검색어] [디렉터리]

데비안 계열(우분투) 리눅스에서는 패키지 관리자로 설치할 때 "fd-find" 패키지 이름으로 설치해야 합니다. 커맨드 이름과 패키지 이름이 약간 다릅니다.

sudo apt install fd-find

검색 결과를 알아보기 쉽게 컬러링해서 보여주기 때문에 가독성이 매우 좋습니다.

유사한 대체툴로 그래픽 콜솔 UI를 지원하는 fdclone도 있습니다. MDir 스타일의 좌우 영역에 소스와 대상 디렉토리를 표시하고 단축키 커맨드로 대부분의 파일 관리와 찾기를 할 수 있습니다.

5. which 명령어

기본 사용법:

which 명령어는 실행 가능한 파일의 위치를 검색하는 데 사용됩니다.

which [실행파일명]

nodejs의 실행 파일 위치를 찾으려면 다음과 같이 커맨드를 입력합니다.

> which nodejs
/usr/bin/nodejs

6. whereis 명령어

기본 사용법:

whereis 명령어는 명령어의 바이너리, 소스 코드, 매뉴얼 페이지의 위치를 모두 검색하는 데 사용합니다.

whereis [명령어명]

예를 들어, nodejs 명령어의 위치 정보를 찾으려면 다음과 같이 입력합니다.

> whereis nodejs
nodejs: /usr/bin/nodejs /usr/lib/nodejs /usr/include/nodejs /usr/share/nodejs /usr/share/man/man1/nodejs.1.gz

이 명령어는 nodejs 명령어의 바이너리 파일, 관련 디렉토리, 소스 코드 및 매뉴얼 페이지의 위치를 모두 출력합니다.