Mac 용 Linux의 updatedb 명령과 동일한 기능은 무엇입니까?


234

locateLinux 컴퓨터 에서 명령 을 사용하려면 일반적으로 sudo updatedb데이터베이스를 업데이트하기 위해 먼저 실행 됩니다. locateOS X 10.5 에서 명령을 실행할 수 있지만 찾을 수 없습니다 updatedb. Mac에 해당하는 업데이트 된 b는 무엇입니까?


잘 upatedb 및 찾기는 좋은 일이지만 updatesb를 정기적으로 실행해야합니다 (updateb는 정기적으로 실행되어 불편한 시간에 시스템 속도가 느려지거나 더 이상 존재하지 않는 파일에 대한 참조를 표시합니다). 따라서 locate / updatedb를 설정하는 대신 (훨씬 더 강력한) 찾기에 익숙해지는 것이 좋습니다.
amo-ej1

9
find는 많은 것들에 유용하지만 매번 파일 시스템을 거쳐야합니다. 찾고있는 곳을 좁힐 수 있다면 괜찮습니다. locate의 장점은 자체 데이터베이스를 유지하므로 매번 검색 할 필요가 없다는 것입니다. 이는 대규모 및 / 또는 원격 파일 시스템에서 특히 중요합니다. 나는 각자의 자리가 있다고 생각합니다.
KeithB

1
locateOS X 상자에서 처음 실행하면 실행 하라는 메시지가 표시 sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist됩니다.
Török Gábor

12
사용할 필요에 따라 locate들어, 당신이 더 편리 스포트 라이트에 명령 줄 인터페이스를 사용하여 찾을 수 있습니다, mdfind, 스포트라이트 데이터베이스가 거의 항상 최신이고, 위치보다 훨씬 더 많은 기능을 제공하기 때문이다. man mdfind
Paul R

답변:


327

그것은이다 locate.updatedbMac에서.

sudo /usr/libexec/locate.updatedb

자세한 내용은 locate.updatedb 매뉴얼 페이지를 참조하십시오 .


9
man페이지는 또한 다음과 같이 주장합니다. 일반적으로 /System/Library/LaunchDaemons/com.apple.locate.plist 작업에 의해 일주일에 한 번 실행됩니다. (그리고 man locate스크립트에 대해 알려줍니다 : /usr/libexec/locate.updatedb 찾기 데이터베이스를 업데이트하는 스크립트 )
Arjan

5
@Arjan : 그것은 일주일에 한 번 실행되지만 기본가 무효이고 그것을 수행해야 시간 : 정말 유용하지 않습니다 일요일 (또는 비슷한) 새벽 3입니다한다
인 Studer

리눅스에서 나는 보통 i / o 컨트롤러를 멋지게 공유하도록 sudo ionice -c3 updatedb지시 updatedb하지만 (io nice)이 명령을 Mac에서 사용할 수 있다고 생각하지 않습니다. 나는 또한 필요 그리워 -r내가 @Grogs 언급 찾아 사제 사용하고 GNU를 설치하려는 모르겠어요하지만, GNU의 위치를 함께 사용할 수있는 정규 표현식 플래그
CWD

3
스포트라이트를 사용하는 "locate (-r)"및 "updatedb"에 대한 예제 macosx 대안 ( "-i"는 물론 선택 사항) : mdfind -name "mp4"| egrep -i "^ / Users. * Downloads /.* Stuff"
michael

또한 예상 한 파일을 찾을 수 없으면 맨 페이지 의 버그 섹션에서 관련 경고를 참고하십시오 . 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
Ashutosh Jindal

85

당신은 할 수 sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb수 있도록 updatedb명령을 사용할 수.


허, 방금이 글을 댓글로 올렸습니다. 나는 이것이 좋은 작은 모드라고 생각합니다. :)
James T Snell

3
또는 .bash_profile에서 별명을 지정하십시오
Jim Johnson

19

개인적으로 findutils (MacPorts 또는 Homebrew 사용)를 설치했습니다.

그런 다음 GNU를 찾고 업데이트했습니다.

updatedb는 sudo 없이는 작동하지 않습니다.

개인적으로 나는 사용자 당 위치를 선호합니다. sudo를 사용하면 다른 사용자가 모든 파일의 이름 / 위치를 알 수 있습니다.

실행할 크론 작업이 있습니다.

updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'

그리고 내 .zshrc .bashrc / .bashprofile에서 :

export LOCATE_PATH="~/tmp/locatedb"


3
OS X Mavericks에 findutils를 Brew-installing하면 gupdatedb명령이 아니라 명령을 내 렸습니다 updatedb. 불행히도이 명령은 여기에 설명 된 오류를 표시했습니다 (SO 답변이 참조되는 위치). 궁극적 으로 해결 방법으로 별명 updatedbLC_ALL=’C’ sudo updatedb받았지만 이것이 장기적인 해결책인지 모르겠습니다.
David Rivers

2
by 및 install by 를 원래 이름 ( 접두어가 아닌 버전) 으로 사용할 수있게 /opt/local/libexec/gnubin하려면 경로 시작 부분에 추가하십시오 . coreutilsfindutilsmacportsg
Ioannis Filippidis

2

데이터베이스를 먼저 업데이트하지 않고 locate를 실행하면 OS가 권장하는 방식으로 결과를 볼 수 있습니다.

WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.