mac ファイル検索できないときの切り分け|索引と除外を順に見る
mac ファイル検索できないと感じるとき、実際に壊れていることは多くありません。多くは索引の届いていない場所を探しているか、過去に自分で入れた除外設定が残っているか、検索語の条件が思っているより厳しいかのどれかです。原因の場所が違えば打つ手も違うので、闇雲に索引を作り直す前に順番を決めて切り分けます。この記事では、確かめる順番と、それぞれで何を見れば白黒が付くのかを整理します。
「出てこない」を4つの症状に分ける
同じ「検索できない」でも、画面に起きていることは4種類あります。ここを分けずに対処を始めると、関係のない設定をいじって時間だけが減ります。
- 結果が完全に0件。何を打っても、明らかに存在するファイル名を打っても空になる
- 一部だけ出ない。ある種類やあるフォルダのものだけが結果に並ばない
- 古い結果が出る。数日前に消したファイルや、以前の名前のまま並ぶ
- 出るが遅い。数十秒待たされる、または結果が少しずつ増えていく
0件なら索引そのものか検索範囲を疑います。一部だけなら除外設定か、そのファイル形式が索引の対象外である可能性が高くなります。古い結果が残るのは索引の更新が止まっている状態で、ファイルの実体と記録がずれています。遅いだけなら、索引の作り直しが背後で進行中か、ネットワーク越しのボリュームを含めて探しているかのどちらかです。
まずどの症状かを言葉にしてから次へ進みます。4種類のうち自分がどれかを決めるだけで、確かめる場所は半分以下に絞れます。判断が付かないときは、確実に存在する新しいファイルを1つ作り、その名前で検索してみます。それが出るなら索引は生きています。出ないなら索引か範囲の問題です。
索引が動いているかを最初に見る
macOSの検索は、ファイルを毎回歩いて探しているわけではなく、あらかじめ作った索引に問い合わせています。索引が無い場所は、そこにファイルがあっても結果に出ません。
ターミナルで mdutil -s / と打つと、起動ディスクの索引の状態が1行で返ります。「Indexing enabled.」と出れば有効、「Indexing disabled.」なら無効です。外付けディスクなら mdutil -s /Volumes/ディスク名 の形で個別に確かめます。無効と出た場所を何度検索しても結果は変わらないので、ここで白黒が付きます。
もう1つの確認は、検索が索引に届いているかどうかです。mdfind -name 確実にあるファイル名 を打って何も返らないのに、find ~ -name "*確実にあるファイル名*" では返る場合、ファイルは存在していて索引だけが欠けていると分かります。逆に両方とも返らないなら、ファイル名の記憶か置き場所の記憶が違います。
外付けディスクを初めてつないだ直後や、macOSを大きく更新した直後は、索引の作成が終わるまで結果が不完全です。容量が1TBを超えるディスクでは、作成に数十分から数時間かかります。この間の「出てこない」は故障ではないので、状態を確かめてから待つ判断をします。
除外設定は自分で入れたことを忘れている
一部のフォルダだけ結果に出ないときの原因で最も多いのが、システム設定に残った除外です。システム設定のSpotlightを開き、右下の「検索のプライバシー」を見ると、除外しているフォルダとディスクの一覧が並びます。ここに親フォルダを1つ入れると、その下にあるすべてが検索から消えます。
Appleはこの設定の影響を、次のように書いています。
重要: 特定のファイルやフォルダを除外すると、一部のアプリのアップデートが利用可能になったときに通知されない場合があります。内蔵ディスク全体を除外すると、アップデートは通知されなくなります。 出典: support.apple.com
除外の影響は検索結果だけにとどまらないという説明です。過去に機密資料を扱う仕事で一時的に入れたまま、案件が終わっても外していないケースがよくあります。同じ画面の検索結果の一覧も見ます。「書類」や「PDF書類」の分類のチェックが外れていると、その種類は候補に並びません。
設定以外の除外もあります。フォルダ名の末尾が .noindex になっていると、その中身は索引の対象から外れます。zipファイルやディスクイメージの中身も、開くまでは検索に出ません。Time Machineのバックアップディスクは、通常の検索結果からバックアップの中身が除かれる仕組みになっています。これらは設定の不備ではなく、そういう作りだと理解して別の経路で探します。
検索語と検索範囲のほうに原因がある場合
索引が生きていて除外もないのに出てこないなら、検索語と範囲を疑います。Finderの検索窓は、既定で「このMac」を対象にするか、開いているフォルダを対象にするかが設定で変わります。フォルダ側になっていると、別の場所にあるファイルは当然出ません。検索結果の上部に並ぶ「このMac」と現在のフォルダ名の切り替えを見て、範囲を確かめます。
検索語のほうでは、条件が想像より厳しいことがあります。複数の条件を足すと、そのすべてを満たすものだけが残ります。
検索結果には、すべての条件と一致する項目のみが表示されます。たとえば、最初の条件に名前が「S」で始まる項目を検索するように指定してから、今日作成された項目を検索する条件を追加した場合は、検索結果には名前が「S」で始まる今日作成された項目のみが表示されます。 出典: support.apple.com
日付の条件を足したまま忘れている、種類を「画像」にしたまま書類を探している、といった取り違えは頻繁に起きます。結果が0件になったら、条件を1つずつ外して、どの条件を外した時点で結果が戻るかを見ます。戻った条件が犯人です。
語句そのものにも癖があります。引用符で囲むと並び順どおりの一致だけが残り、囲まないと同じ語を任意の順で含むものまで入ります。日本語のファイル名は語の切れ目が機械にとって曖昧なため、単語の途中から打つと一致しないことがあります。名前の先頭側から3文字ほどで試すほうが確実です。
索引を使わない経路で答え合わせをする
索引を疑ったまま設定をいじり続けるより、索引を使わない経路で1回答え合わせをするほうが早く終わります。find はファイルシステムを直接たどるため、索引の状態と無関係に結果を返します。
find ~ -iname "*請求*" 2>/dev/null のように打てば、ホーム以下の名前一致が返ります。-iname は大文字小文字を区別しません。末尾の 2>/dev/null は、権限が無くて読めないフォルダの警告を捨てる指定です。これで出るなら、ファイルは存在していて索引だけが欠けていると確定します。
中身が手がかりなら grep -r の系統を使います。grep -ril "キーワード" ~/Documents で、その語を含むファイルの一覧が返ります。ripgrep を使う場合は、初期状態で隠しファイルと .gitignore に載っているファイルを飛ばす点に注意します。この既定値を知らないと、あるはずのファイルが出ない理由が分かりません。rg --hidden --no-ignore を付けると対象に入ります。
どちらの経路も、対象が大きいと時間がかかります。ホーム全体を対象にすると数分待つこともあるので、心当たりのあるフォルダに範囲を絞ってから走らせます。答え合わせが目的なので、全部を舐める必要はありません。
クラウド同期とアーカイブは検索の外にある
近年の「出てこない」で増えているのが、ファイルが手元に落ちていないケースです。iCloud Driveの容量最適化が働いていると、実体はサーバにあり、手元にはプレースホルダだけが残ります。名前は検索に出ても、中身の語では出てきません。
Google DriveやDropboxのストリーミング方式も同じ性質を持ちます。オンライン専用の状態にあるファイルは、中身が手元に無いため全文の対象になりません。よく探すフォルダだけでも「このデバイス上に常に保持」の設定を入れておくと、この種の空振りが減ります。
もう1つはアーカイブです。過去の案件を圧縮してまとめている場合、その中のファイルは検索に出ません。年度単位でzipにする運用は容量の面では合理的ですが、探せなくなる代償があります。圧縮する前に、ファイル名の一覧をテキストで書き出して同じ場所に置いておくと、名前だけは検索に残ります。
メールの添付やメッセージアプリ内のファイルも、アプリの外からは見えないことがあります。2か所以上のクラウドを併用している環境では、どのサービスに置いたかの記憶違いも起きます。探す前に、置き場所の候補を口に出して数えるだけで空振りが減ります。
索引の作り直しは最後に回す
ここまでを通しても原因が見えないときに、初めて索引の作り直しを検討します。sudo mdutil -E / は既存の索引を捨てて作り直す指定で、実行後は背後で再作成が進みます。
問題は所要時間です。作り直しの間、検索結果は不完全になります。容量と機種によって差が大きく、数十分で終わることもあれば、数時間かかることもあります。仕事の途中で走らせると、その日の検索が使い物にならなくなる可能性があります。作業の切れ目や就業後に回すのが現実的です。
作り直す前に、mdutil -s で対象ボリュームの状態を控えておきます。無効になっているボリュームがあるなら、sudo mdutil -i on /Volumes/ディスク名 で有効にするほうが先です。無効のまま作り直しても、そのボリュームは対象になりません。
順番を飛ばして先に作り直しを走らせると、原因が除外設定や検索範囲にあった場合、待った時間がそのまま無駄になります。索引の作り直しは効き目の大きい手ですが、当たる確率は最も低い手でもあります。確率の高いものから順に潰す、という原則をここでも守ります。
見つかった後に手が止まる場所を数える
検索の詰まりが解けても、仕事が速くなったと感じないことがあります。原因は探す工程の外にあります。見つけたファイルを別のフォルダへ移す、名前を整える、パスを渡してコマンドを走らせる、中身をAIに読ませて要約させる。この受け渡しのたびに窓が切り替わります。
流れを分解すると形が見えます。検索結果で目的のファイルを選ぶ。シェルで処理するためにパスをコピーする。窓を切り替えて貼り付ける。結果を目で確かめるためにまた戻る。AIに文脈を渡すためにもう一度パスを拾う。1回5秒の切り替えでも、1日40回なら無視できません。
ここに関わるのがフォルダとターミナルとAIが同じ窓にあるという配置です。一覧で選んだ場所がそのまま作業ディレクトリになっていれば、パスのコピーと窓の往復が消えます。この配置で具体的に何ができるのかはできることに整理してあり、席を離れた後に続きを確認する使い方はiPhone・iPadから続きをで説明しています。2画面型やターミナル常駐型など、別の考え方に立つ道具との違いは他のファイル管理との比較で並べています。
判断の材料は、道具を替える前に集められます。1週間だけ、検索した後に窓を切り替えた回数を数えます。回数が少ないなら、この記事にある設定の見直しで足ります。回数が多いなら、それは検索が壊れている問題ではなく、道具が分かれていることの問題です。導入の費用感を先に見ておきたい場合は料金に条件が載っています。
よくある質問
索引を作り直せば検索の不調はだいたい直る?
直る場合もありますが、当たる確率は低いほうです。除外設定、検索範囲、ファイル形式、クラウドの同期状態のほうが原因になりやすく、作り直しは数十分から数時間かかります。先に mdutil -s で状態を見て、除外の一覧と検索条件を確かめてから、最後の手として回すのが効率的です。
特定のフォルダだけ結果に出ないのはなぜ?
システム設定のSpotlightにある「検索のプライバシー」に、そのフォルダか親フォルダが登録されている可能性が高いです。ほかに、フォルダ名の末尾が .noindex になっている、外付けディスクの索引が無効になっている、圧縮ファイルの中にある、といった理由もあります。まず除外の一覧から確かめます。
ファイルは確かにあるのに中身の語で見つからないときは?
中身が手元に無いか、その形式が全文の対象外かのどちらかです。iCloud DriveやGoogle Driveの容量最適化が働いていると、実体はサーバにあり中身は検索されません。画像として保存されたPDFも文字を持たないため対象外です。手元に落としてから、grep -ril などで直接読ませて確かめます。
検索が急に遅くなった場合、何を疑えばよい?
索引の再作成が背後で進んでいるか、ネットワーク越しのボリュームを含めて探しているかを疑います。外付けディスクをつないだ直後やmacOSの更新直後は再作成中のことが多く、時間が経てば戻ります。検索範囲を現在のフォルダに絞ると、ネットワーク越しの遅さは切り分けられます。