Mac用のLinuxのupdatedbコマンドに相当するものは何ですか?


234

locateLinuxマシンでコマンドを使用する場合、通常はsudo updatedb最初に実行してデータベースを更新します。locateOS X 10.5でコマンドを実行できますが、見つかりませんupdatedb。Mac用の対応するupdatedbとは何ですか?


upatedbとlocateは良いことですが、updatedbを定期的に実行する必要があります(updatedbが定期的に実行されるため、都合の悪いときにシステムが遅くなるか、locateはもう存在しないファイルへの参照を示します)。したがって、locate / updatedbをセットアップする代わりに、(はるかに強力な)findに慣れる方がおそらく良いと思います。
amo-ej1

9
findは多くのことに役立ちますが、毎回ファイルシステムを調べる必要があります。探している場所を絞り込むことができれば、それで問題ありません。Locateの利点は、独自のデータベースを保持するため、毎回検索する必要がないことです。これは、大規模ファイルシステムやリモートファイルシステムで特に重要です。それぞれにその場所があると思います。
KeithB

1
最初にlocateOS Xボックスで実行すると、実行するように指示されますsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Törökガーボル

12
使用する必要があるものによっては、Spotlightデータベースはほぼ常に最新であり、locateよりも多くの機能を提供するため、Spotlight locateのコマンドラインインターフェイスを使用する方が便利mdfindな場合があります。man mdfind
ポールR

回答:


327

それはですlocate.updatedbMac上で。

sudo /usr/libexec/locate.updatedb

詳細については、locate.updatedbのマニュアルページを参照してください


9
また、そのmanページは次のように主張しています。通常、週に1回/System/Library/LaunchDaemons/com.apple.locate.plistジョブによって実行されます。(そして、man locateそのスクリプトについて1を告げる:スクリプト/usr/libexec/locate.updatedb locateデータベースを更新するために
Arjan

5
@Arjan::)本当に便利されていない、週に一回実行する必要がありますが、デフォルトでは、無効になっていますし、それが行われるべき時間は日曜日の午前3時(または同様のもの)である
ステューダー

Linuxでは通常、i / oコントローラーをうまく(io nice)共有するsudo ionice -c3 updatedbように指示updatedbしますが、このコマンドはMacでは使用できないと思います。また-r、GNU Locateで使用できる正規表現フラグがありませんが、homebrewを使用して@Grogs
cwdで

3
「locate(-r)」および「updatedb」の代わりにスポットライトを使用するmacosxの例(「-i」はもちろんオプション):mdfind -name "mp4" | egrep -i "^ / Users。* Downloads /.* Stuff"
マイケル

また、あなたがあればしていないあなたは、バグのセクションからこの関連の注意事項に留意することが予想されるファイルを見つけるのmanページ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
アッシュートッシュジンダル


19

個人的に、findutilsをインストールしました(MacPortsまたはHomebrewを使用)。

次に、GNUを見つけて更新しますb。

updatedbはsudoなしでは機能しません。

個人的には、ユーザーごとにlocatebを持っていることを好む; sudoを使用すると、他のユーザーはすべてのファイルの名前/場所を知っています。

実行するcronジョブがあります。

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

そして、私の.zshrc .bashrc / .bashprofileで:

export LOCATE_PATH="~/tmp/locatedb"


3
OS X Mavericksにfindutilsを作成してインストールすると、gupdatedbコマンドではなくコマンドが与えられましたupdatedb。残念ながら、このコマンドにより、ここで説明するエラーが発生しました(SOの回答が参照されています)。最終的には回避策としてエイリアスupdatedbを作成しLC_ALL=’C’ sudo updatedbましたが、これが長期的なソリューションであるかどうかはわかりません。
デビッドリバーズ

2
追加/opt/local/libexec/gnubinしたい場合は、パスの開始時coreutilsfindutilsではインストールされmacports、元の名前(とない自分で利用できるようにするg-prefixedバージョン)。
イオアニスフィリピディス14

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.