SW/리눅스

Linux :Locate 명령어, 사용 방법, 예제

얇은생각 2021. 11. 9. 07:30
반응형

Linux에서 작업할 때 가장 일반적인 작업 중 하나는 파일 및 디렉토리를 검색하는 것입니다. Linux 시스템에는 파일을 검색할 수 있는 여러 명령이 있으며, 가장 많이 사용되는 명령은 찾기 및 찾기입니다.

locate 명령은 파일 및 디렉토리를 이름으로 검색하는 가장 빠르고 간단한 방법입니다.

 이 글에서는 locate 명령어를 사용하는 방법에 대해 설명합니다.

 

 

Linux :Locate 명령어, 사용 방법, 예제

 

 

locate를 설치

배포 및 시스템 프로비저닝 방식에 따라 locate 패키지가 Linux 시스템에 미리 설치되거나 설치되지 않을 수 있습니다. 

locate 유틸리티가 설치되어 있는지 확인하려면 터미널을 열고 locate를 입력한 후 Enter 키를 누릅니다. 패키지가 설치된 경우 시스템에서 locate: 검색할 패턴이 없습니다.를 표시합니다. 그렇지 않으면 locate 명령을 찾을 수 없습니다.

 locate가 설치되어 있지 않으면 distro의 패키지 관리자를 사용하여 쉽게 설치할 수 있습니다.

 

 

 

Ubuntu 및 Debian에 locate를 설치

sudo apt update 
sudo apt install mlocate

 

 

CentOS 및 Fedora에 설치

sudo yum install mlocate

 

 

Locate 동작 방법

locate 명령은 업데이트된 b 명령으로 생성된 데이터베이스 파일을 통해 지정된 패턴을 검색합니다. 발견된 결과는 한 줄에 하나씩 화면에 표시됩니다. 

mlocate 패키지를 설치하는 동안 24시간마다 업데이트된 b 명령을 실행하는 cron 작업이 생성됩니다. 이렇게 하면 데이터베이스가 정기적으로 업데이트됩니다. cron 작업에 대한 자세한 내용은 /etc/cron.daily/mlocate 파일을 확인하십시오.

데이터베이스는 다음과 같은 sudo 권한을 가진 사용자 또는 루트로 업데이트하여 수동으로 업데이트할 수 있습니다.

sudo updatedb

 

 

파일 및 디렉터리 수와 시스템 속도에 따라 업데이트 프로세스에 약간의 시간이 걸립니다.

데이터베이스 업데이트 후 생성된 파일은 찾기 결과에 표시되지 않습니다. 

파일 시스템을 검색하는 보다 강력한 find 명령에 비해 locate는 훨씬 빠르게 작동하지만 많은 기능이 부족하며 파일 이름으로만 검색할 수 있습니다.

 

 

 

locate 명령어를 사용하는 방법

locate 명령에 대한 구문은 다음과 같습니다. 

locate [OPTION] PATTERN...

 

 

locate 명령은 옵션 없이 사용할 경우 검색 패턴과 일치하고 사용자에게 읽기 권한이 있는 모든 파일 및 디렉토리의 절대 경로를 출력합니다. 

예를 들어 .bashrc 파일을 검색하려면 다음을 입력합니다.

locate .bashrc

# /etc/bash.bashrc
# /etc/skel/.bashrc
# /home/jjeongil/.bashrc
# /usr/share/base-files/dot.bashrc
# /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
# /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

 

 

출력에는 이름에 .bashrc 문자열이 포함된 모든 파일의 이름이 포함됩니다.

명령을 /root 디렉토리에 대한 액세스 권한이 없는 일반 사용자로 실행했으므로 /root/.bashrc 파일이 표시되지 않습니다.

결과 목록이 긴 경우 보다 나은 가독성을 위해 출력을 less 명령으로 파이핑할 수 있습니다.

locate .bashrc | less

 

 

locate 명령은 와일드카드 문자 *와 같은 글로벌 문자를 포함하는 패턴도 허용합니다. 패턴에 글로벌 문자가 없는 경우 명령은 *PATTERn*을(를) 검색합니다. 그래서 이전 예에서는 이름에 검색 패턴이 포함된 모든 파일이 표시됩니다.

일드카드는 0, 하나 이상의 문자를 나타내는 데 사용되는 기호입니다. 예를 들어 시스템의 모든 .md 파일을 검색하려면 다음을 입력합니다.

locate *.md

 

검색 결과를 제한하려면 -n 옵션과 표시할 결과 수를 차례로 사용합니다. 다음 명령은 모든 .py 파일을 검색하고 10개의 결과만 표시합니다.

locate -n 10 *.py

 

 

기본적으로 locate는 대소문자를 구분하는 검색을 수행합니다. -i(--ignore-case) 옵션은 대/소문자를 구분하지 않고 대/소문자를 구분하지 않는 검색을 실행하도록 지정합니다.

locate -i readme.md

# /home/linuxize/p1/readme.md
# /home/linuxize/p2/README.md
# /home/linuxize/p3/ReadMe.md

 

 

일치하는 모든 항목의 수를 표시하려면 -c(--count) 옵션을 사용합니다. 다음 명령은 이름에 .bashrc가 포함된 모든 파일의 수를 반환합니다.

locate -c .bashrc

# 6

 

 

기본적으로 locate는 발견된 파일이 파일 시스템에 아직 있는지 확인하지 않습니다. 최신 데이터베이스 업데이트 후 파일을 삭제한 경우 파일이 검색 패턴과 일치하면 검색 결과에 포함됩니다. 

찾을 때 존재하는 파일 이름만 표시하려면 -e(--existing) 옵션을 사용합니다. 예를 들어 기존 .json 파일만 반환됩니다.

locate -e *.json

 

 

더 복잡한 검색을 실행하려면 패턴 대신 기본 regexp를 사용하여 검색할 수 있는 -r(--regexp) 옵션을 사용하십시오. 이 옵션은 여러 번 지정할 수 있습니다.

예를 들어 시스템의 모든 .mp4 및 .avi 파일을 검색하고 대소문자를 무시하려면 다음을 실행합니다.

locate --regex -i "(\.mp4|\.avi)"

 

 

locate 명령은 파일 시스템에서 이름이 지정된 패턴과 일치하는 파일 및 디렉토리를 검색합니다. 명령 구문은 기억하기 쉽고 거의 즉시 결과가 표시됩니다. 

locate 명령 유형 man의 사용 가능한 모든 옵션에 대한 자세한 내용은 터미널에 있습니다.

반응형