2009-06-29 4 views
8

최근 Mac에서 MAMP를 사용하는 대신 MacPorts를 사용하여 내 지역 웹 개발 영역을 옮겼습니다. 나는 Python/Django에 들어갔고 실제로 MAMP가 더 이상 필요하지 않았다.unix locate 명령으로 더 이상 존재하지 않는 파일/폴더가 표시되는 이유는 무엇입니까?

환경 설정 파일과 함께 응용 프로그램 폴더에서 MAMP를 제거했습니다. 그러나 터미널에서 'MAMP 찾기'명령을 실행하면 어떻게하면 내/응용 프로그램/MAMP/물건이 모두 표시되는지 알 수 있습니다. 아직 다 거기있어? 그리고 내가 때 'cd'/ 응용 프로그램/MAMP/그것은 존재하지 않습니까?

인덱스 검색 시스템의 종류가되는 것과 관련이 있습니다. 따라서 이러한 오래된 파일 경로가 캐시됩니다. 이유를 설명하고 더 이상 표시되지 않도록 정렬하는 방법을 설명하십시오.

답변

8

당신은 올바른 생각을 가지고 있습니다 : locate은 'locatedb'이라는 데이터베이스를 사용합니다. 일반적으로 시스템 cron 작업에 의해 업데이트됩니다 (OS X에서 어떤 버전인지는 알 수 없습니다). updatedb 명령을 사용하여 강제로 업데이트 할 수 있습니다. 다른 것들 중에서 http://linux-sxs.org/utilities/updatedb.html을 참조하십시오. 또한


, 당신은 OSX 'locate(1) 사람이 페이지의 버그 섹션에서이 중요한주의주의하는 것이 기대 파일을 찾을 수 없습니다 당신이 경우 : 실제로

The locate database is typically built by user ''nobody'' and the locate.updatedb(8) utility skips directories which are not readable for user ''nobody'', group ''nobody'', or world. For example, if your HOME directory is not world-readable, none of your files are in the database.

+0

같은 이유로, 최근에 생성 된 파일을 표시하는 데 실패합니다. 마지막으로 업데이트 된 파일 b 이후에 만들어진 파일은 locate로 볼 수 없습니다. –

+0

OSX 10에서.10, db를 업데이트하는 시스템 cron은'/ System/Library/LaunchDaemons/com.apple.locate.plist'입니다. –

+0

또한, 당신이 기대하는 파일을 찾지 못했다면,이 중요한주의 사항을 버그 OSX의 [locate (1)] 섹션 (http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/locate.1.html) man-page :'데이터베이스 위치 는 일반적으로 사용자 ''nobody ''가 만들고 사용자는 ''nobody '', 그룹 ''nobody ''또는 world의 경우 locate.updatedb (8) 유틸리티는 읽을 수없는 디렉토리를 건너 뜁니다. 예를 들어, 홈 디렉토리가 세계에서 읽을 수없는 경우 데이터베이스에 파일이 없습니다. ' –

0

은 색인을 통해 명령을 검색하므로 매우 빠릅니다. 색인은 updatedb 명령에 의해 생성되며 대개 또는 주간 작업으로 실행됩니다.

수동으로 업데이트하려면 updatedb을 실행하십시오.

0

은 man 페이지에 따르면, 데이터베이스는 일주일에 한 번 업데이트됩니다

http://unixhelp.ed.ac.uk/CGI/man-cgi?locate+1

당신의 수색을 찾을 것을 볼 수 있습니다

NAME 
    locate.updatedb -- update locate database 

SYNOPSIS 
    /usr/libexec/locate.updatedb 

DESCRIPTION 
    The locate.updatedb utility updates the database used by locate(1). It is typically run once a week by 
    the /etc/periodic/weekly/310.locate script. 
0

가 찾아 man 페이지를 살펴 보자 데이터베이스가 아니라 실제 파일 시스템. updatedb 명령을 사용하여 해당 데이터베이스를 업데이트 할 수 있습니다.

또한 데이터베이스이기 때문에 정기적으로 업데이트하지 않는 한 데이터베이스에없는 파일 시스템에있는 파일을 찾으십시오.

6

다른 답변은 locate 데이터베이스를 업데이트해야합니다. 내 위치를 DB를 업데이트하려면이 별명을 가지고있다 : 나는 실제로 내가 mdfind를 발견 한 것을 이제 더 이상 모든 것을 많이 찾을 사용하지 않는

alias update_locate='sudo /usr/libexec/locate.updatedb' 

. 그것은 OSX가 locatedb와 비교하여 최신 상태를 유지하는 데 훨씬 더 좋은 스포트라이트 파일 인덱스를 사용합니다. 그것은 또한 커맨드 라인에서 검색 할 수있는 능력이 상당히 뛰어납니다.

+0

이것은 영원히 필요합니다 .... –