OS Xでは、次のコマンドを実行することでロケートDBにデータが入力されると思います。
Sudo /usr/libexec/locate.updatedb
しかし、locateは〜/以下に何も見つからないようです〜/
Locate.updatedbは、デフォルトでホームフォルダのインデックスを作成する必要がありますか?もしそうなら、なぜそうではないのか提案やアイデアはありますか?デフォルトで〜/にインデックスを付けない場合、このフォルダ階層にインデックスを付けない理由はありますか?そうでない場合、どのように構成すればよいですか?
また、(root以外として)〜/からlocate.updatedbを実行すると、機能します。以下のいずれか(たとえば、〜/ Desktop /)から実行すると、次のエラーが発生します。
Shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
find: .: Permission denied
Locateは「nobody」ユーザーとして実行され、他のユーザーがLocateデータベース内の「自分の」ファイルを表示できないようにします。 yourアカウントはファイルを探索する権限を持つ唯一のアカウントであるため、locateはファイルを表示できません。アカウントが唯一のローカルユーザーである場合でも、この制限が適用されます。 Locate.updatedbスクリプトをSudo
すると、それが生成するfind
コマンドは特に非特権として開始されます。この問題を防ぐためにスクリプトを変更することはできますが、推奨されているとは言えません。
また、ほとんどの人にとってSpotlight/MDSの方が優れていると想定されるため、locateはデフォルトでは有効になっていません。 mdfindコマンドを試してみることをお勧めします。 Locateを定期的に実行することにした場合は、Sudo launchctl load -w /System/Library/LaunchDaemons/com.Apple.locate.plist
を実行して、起動したジョブをロードし、定期的にインデックスを再作成します。
/usr/libexec/locate.updatedb
を変更することで、ほとんどどこでも検索できる場所を見つけることができます。
変化する:
if [ "$(id -u)" = "0" ]; then
言う、
if [ "$(id -u)" = "1" ]; then
セキュリティの低下。パソコンでのみ使用してください。