macOS でファイル名でファイルを検索する locate コマンドを使っている (mdfind と使い分けをしている)。 データベース・ファイルを用意しておく必要があり、 一度 sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist のようなコマンドを実行しておけ、と言われている。ところが
% sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist Load failed: 5: Input/output error Try running `launchctl bootstrap` as root for richer errors. |
plist 自体はもともと提供されているものなので、問題はないはず。実際、 文法チェックしてみると
% plutil -lint /System/Library/LaunchDaemons/com.apple.locate.plist /System/Library/LaunchDaemons/com.apple.locate.plist: OK |
一度 unload してから load するのだそうだ。
% sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.locate.plist Password: % sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist % |
パーミッションが 700 である自分のディレクトリィの下は検索しない。 自分のホームディレクトリィのパーミッションをそうしている場合には、 自分のファイルのデータベースを別に作るべきか。
mkdir ~/var cp -p /etc/locate.rc ~ vi ~/locate.rc |
こんなふうに書き換える |
% diff /etc/locate.rc ~/locate.rc 13c13 < #FCODES="/var/db/locate.database" --- > FCODES="/Users/mk/var/locate.database" 16c16 < #SEARCHPATHS="/" --- > SEARCHPATHS="/Users/mk" % |
makelocatedatabase |
#!/bin/sh export LOCATE_CONFIG="/Users/mk/locate.rc" /usr/libexec/locate.updatedb |