MDUtil

Mac の mdutil コマンド

mdutil は macOS に付属するターミナルのコマンドで、Spotlight の検索インデックスを管理します。ディスクがインデックスされているかの確認、インデックス作成のオン・オフ、インデックスを消去して Spotlight に作り直させることができます。

macOS Sequoia 15.7 で実行して確認

よく使うコマンド

  • 起動ディスクがインデックスされているか表示mdutil -s /
  • すべてのボリュームの状況を表示mdutil -sa
  • 起動ディスクのインデックスを消去して再作成sudo mdutil -E /
  • ドライブのインデックス作成をオフにするsudo mdutil -i off "/Volumes/My Drive"
  • インデックス作成をオンに戻すsudo mdutil -i on "/Volumes/My Drive"

ディスクがインデックスされているか確認する

-s は指定したボリュームのインデックス状況を表示します。/ は起動ディスクで、ほかのドライブは /Volumes の下にマウントされます。状況の確認に sudo は要りません。

mdutil -s /
/:
	Indexing enabled.

-a を付けると、Spotlight が把握しているすべてのボリュームを一覧表示します。macOS Catalina 以降は、ファイルが保存されている /System/Volumes/Data と、/System/Volumes/Preboot も表示されます。

mdutil -sa

パスにはボリュームのマウント先を指定します。ホームフォルダのような普通のフォルダを指定すると、Error: unknown indexing state. になります。

Spotlight のインデックスを再作成する

Spotlight や Finder の検索で、ディスクにあるはずのファイルが見つからない、ずっと前に削除したファイルが出続ける、といった場合はインデックスが壊れている可能性があります。-E はボリュームのインデックスを消去し、Spotlight はすぐに新しいインデックスの作成を始めます。

sudo mdutil -E /

sudo は Mac のログインパスワードを求めます。入力中の文字は表示されません。外付けドライブには /Volumes の下のパスを指定し、名前に空白があれば引用符で囲みます。

sudo mdutil -E "/Volumes/My Drive"

先にインデックス作成をオフにする必要はありません。Apple によると、インデックスの作成にはデータ量に応じて数時間から数日かかることがあり、Mac を使っておらず電源につないでいるときのほうが早く終わります。作成中は、アクティビティモニタで mds、mds_stores、mdworker が CPU を使っているのが見えます。

再作成は、インデックスが本当におかしいときだけにしてください。macOS のアップデート後や大量のファイルが変わったときは、Spotlight がしばらくインデックスを作り続けるのが普通で、そこで消去すると最初からやり直しになります。

インデックス作成をオフ・オンにする

-i off はボリュームのインデックス作成を止めます。バックアップや一時ファイルだけを置くドライブに向いています。オフにすると、検索でそのボリュームのファイルの中身を探せなくなります。

sudo mdutil -i off "/Volumes/My Drive"

-i on でインデックス作成がオンに戻り、Spotlight はそのボリュームのインデックスを最新の状態にします。

sudo mdutil -i on "/Volumes/My Drive"

-d はさらにそのボリュームの検索もオフにし、状況は Indexing and searching disabled. になります。これも -i on で元に戻せます。

起動ディスクのインデックス作成をオフにするのはおすすめできません。Spotlight はそのインデックスを使って、アプリ、書類、メール、システム設定を探すからです。特定のフォルダだけを検索結果から外したい場合は、Spotlight の設定にあるプライバシーのリストに追加してください。

オプション一覧

オプション内容
-s指定したボリュームのインデックス状況を表示します。
-aすべてのボリュームにコマンドを適用します。例:mdutil -sa
-i on、-i offインデックス作成をオンまたはオフにします。ディスクの空きが少ないときは、作成が後回しになることがあります。
-Eインデックスを消去し、Spotlight に作り直させます。
-dボリュームのインデックス作成と検索をオフにします。
-v詳しい情報があれば表示します。例:mdutil -sv /
-V ボリュームそのボリューム上のすべてのインデックスにコマンドを適用します。
-tファイル ID からファイルを探します。ボリュームのパスかデバイス ID を指定できます。
-r プラグイン指定したインポータプラグインが扱うファイルを、Spotlight に読み込み直させます。
-L ボリュームボリュームのインデックスフォルダの中身を一覧表示します。sudo が必要です。
-P ボリュームボリュームの Spotlight 設定ファイル VolumeConfiguration.plist を表示します。sudo が必要です。
-X ボリュームインデックス作成はオフにせずに、ボリュームのインデックスフォルダを削除します。再起動、ボリュームの再マウント、-i や -E の実行の後に、Spotlight が作り直します。sudo が必要です。
-pローカルにキャッシュしたインデックスをネットワークドライブに書き戻すためのものです。macOS Sequoia では Error: datastore publishing not implemented. と表示されます。

メッセージの意味

  • Indexing enabled.
    Spotlight は通常どおりボリュームのインデックスを作成しています。
  • Indexing disabled.
    インデックス作成がオフです。sudo mdutil -i on とボリュームのパスでオンにできます。
  • Indexing and searching disabled.
    -d を実行した後などで、インデックス作成と検索の両方がオフです。-i on で両方とも元に戻ります。
  • Indexing and searching disabled because of ".metadata_never_index" file at root of volume.
    ボリュームの最上位に .metadata_never_index という空のファイルがあり、Spotlight の対象から外れています。このファイルを削除してから、インデックス作成をオンにします。
  • Error: unknown indexing state.
    パスがボリュームのマウント先ではありません。/ か /Volumes の下のドライブを指定してください。
  • Error: unexpected indexing state. kMDConfigSearchLevelTransitioning
    直前のコマンドの後で、ボリュームの状態がまだ切り替わっている途中です。数秒待ってから、もう一度実行します。
  • Error: Index is already changing state. Please try again in a moment.
    上と同じく、少し待ってからやり直します。
  • Error: unable to perform operation. Try as root. (-1)
    管理者の権限が必要な操作です。コマンドの前に sudo を付けます。
  • Must be root to run this command
    -L、-P、-X には sudo が必要です。
  • Error: invalid path
    そのパスは存在しません。綴りを確かめ、名前に空白があれば引用符で囲みます。
  • Spotlight server is disabled.
    mdutil が Spotlight のバックグラウンドサービスに接続できません。Mac を再起動してから確認します。
  • No index.
    ボリュームにまだ Spotlight のインデックスがありません。
  • Index is read-only.
    Spotlight は既存のインデックスで検索できますが、更新はしません。
  • Server search enabled.
    ネットワークボリュームは、サーバ側のインデックスで検索されます。

ターミナルを使わずに再作成する

Apple の公式の方法では、Spotlight の設定からディスクやフォルダのインデックスを作り直します。

  1. Appleメニューから「システム設定」を選択し、サイドバーで「Spotlight」(または「SiriとSpotlight」)をクリックします。
  2. 下にスクロールし、ウインドウの下部にある「検索のプライバシー」(または「Spotlightのプライバシー」)ボタンをクリックします。
  3. ディスクやフォルダをリストにドラッグするか、追加ボタン(+)をクリックして選択します。
  4. 数秒待ってから、リストでその項目を選択し、削除ボタン(–)をクリックします。
  5. 「完了」をクリックします。Spotlight がそのディスクやフォルダのインデックスを作り直します。

この手順は、Apple の「Apple製デバイスのSpotlightインデックスと検索結果について」で説明されています。

関連するコマンド

mdutil はインデックスを管理するコマンドです。次のコマンドも macOS に付属していて、このインデックスを使います。

  • mdfind はターミナルから Spotlight と同じようにインデックスを検索します。例:mdfind "四半期 報告"。mdfind -name invoice はファイル名だけを照合します。-onlyin とフォルダを付けると、そのフォルダの中だけを検索します。
  • mdls は、Spotlight がファイルについて記録しているメタデータを一覧表示します。例:mdls ~/Desktop/report.pdf
  • mdimport -L は、Spotlight がファイルの種類ごとに使うインポータプラグインを一覧表示します。

よくある質問

mdutil に sudo は必要ですか?

状況の確認には要りません。起動ディスクの設定を変えるときと、どのボリュームでも -L、-P、-X を使うときには必要で、付けないと Try as root や Must be root to run this command と表示されます。

Spotlight のインデックスの再作成にはどのくらいかかりますか?

ディスクのデータ量によります。Apple によると数時間から数日かかることがあり、Mac を使っておらず電源につないでいるときのほうが早く終わります。

Spotlight がインデックスを作成中かどうかは、どうすればわかりますか?

アクティビティモニタを開くと、作成中は mds、mds_stores、mdworker が CPU を使っています。検索がまだ使えない間は Spotlight のウインドウ上部にも進行状況のバーが出ますが、バーが消えた後もしばらく作成が続くことがあります。

インデックスを消去するとファイルも消えますか?

消えません。-E が削除するのは Spotlight のインデックスだけで、macOS がファイルから作り直します。新しいインデックスができるまでは、検索結果が不完全になります。

MDUtil と Apple の mdutil は関係がありますか?

関係はありません。MDUtil(mdutil.com)はブラウザで動く無料の Markdown ツールのサイトで、Markdown を Word・PDF・HTML に変換したり、元に戻したりできます。Apple の mdutil は macOS に付属するコマンドで、名前が同じだけです。