Linux에서 'locate'와 'find'의 차이점은 무엇입니까?


답변:


38

find실제 시스템에서 검색합니다. 속도는 느리지 만 항상 최신이며 더 많은 옵션 (크기, 수정 시간 등)이 있습니다.

locate이전에 빌드 된 데이터베이스를 사용합니다 (command updatedb). 훨씬 빠르지 만 '이전'데이터베이스를 사용하고 이름이나 그 일부만 검색합니다.

어떤 경우, man find그리고 man locate추가로 도움이 될 것입니다.


1
...와 updatedb같은 대략적인 것을 수행합니다 find / -type f | gzip > locate.gz.
F. Hauri

10
unix.stackexchange.com/questions/60205/… 가이 질문에보다 자세하게 답변합니다.
natty에 대해 nutty

3

locatefind명령 모두 파일을 찾을 수 있지만 상당히 다른 방식으로 작동합니다.

locate 오프라인 모드에서 작동합니다 :

  • 간단한 설명을 위해 slocate 라는 Unix 시스템의 파일 인덱싱 데이터베이스에는 Unix 시스템 과 함께 제공되는 모든 파일의 위치가 나열됩니다. 를 실행하면 locate해당 데이터베이스를 사용하여 특정 파일을 검색합니다. 문제 locate는 검색하려는 파일을 방금 만든 경우 slocate 데이터베이스가 최신이 아니기 때문에 찾기 가 작동하지 않는다는 것 입니다. 이 문제를 극복하기 위해 slocate 데이터베이스 를 업데이트하는 데 사용할 수 있습니다 . 다시 실행 하면 새로 작성된 파일을 찾을 수 있습니다. 따라서 많은 Linux 시스템 관리자는 작업을 사용 하여 slocate 데이터베이스 를 정기적으로 업데이트 합니다.updatedblocatecron

find 온라인 / "실시간"모드에서 작동합니다.

  • 실제로 모든 디렉토리를 검색하여 지정된 특정 파일을 찾고 각 파일을 하나씩 검사합니다. 따라서 많은 I / O 호출이 필요합니다.

따라서 특성에 따라 찾기가 찾기보다 빠르지 만 찾기는 실시간이라는 것이 분명합니다.

이것이 아이디어를 지우는 데 도움이되기를 바랍니다. 모두 제일 좋다. :)


0

locate 단순히 데이터베이스를보고 파일 위치를보고합니다.

find 데이터베이스를 사용하지 않으면 모든 디렉토리와 해당 서브 디렉토리를 순회하며 주어진 기준과 일치하는 파일을 찾습니다.


0

find 사용에 대한 대안은 locate 명령입니다. 이 명령은 종종 더 빠르며 전체 파일 시스템을 쉽게 검색 할 수 있습니다. apt-get을 사용하여 명령을 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install mlocate

찾기가 찾기보다 빠른 이유는 파일 시스템의 파일 데이터베이스에 의존하기 때문입니다. 데이터베이스는 일반적으로 cron 스크립트로 하루에 한 번 업데이트되지만 다음을 입력하여 수동으로 업데이트 할 수 있습니다.

sudo updatedb

이 명령을 지금 실행하십시오. 최근에 획득하거나 생성 한 파일을 찾으려면 데이터베이스가 항상 최신 상태 여야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.