One IT Thing

IT業界を楽しむ為の学習系雑記

mac

各種OSでのインデックスを使用した高速ファイル名検索と全文検索【MacOSX編】

投稿日:

目的

  • MacOSX上に存在する全ての「~.java」ファイルをリストアップします。
  • 上記の内「System.out.println」が含まれているファイルを見つけます。

環境

MacOS X 10.14.4 Mojave

使用コマンド

mdfind [探したいファイル名]
インデックス検索出来るmdfindコマンドを使うことでfindよりも高速に検索出来ます。

CentOSのようにMacOSXにもFreeBSD由来のlocateが有りますが、mdfindはファイル名インデクシングを自動で行ってくれる優位性があります。

mdfindは「コマンドキー」+「スペースキー」で起動する「SportLight」ツールのコマンドラインインタフェースです。mdimportコマンドやmdutilコマンドでインデックスの操作が出来ます。

ファイル名をインデクシングするlocateと違い、ファイルの内容もインデクシングします。(が、後者はおまけ程度に考えた方が安全です)

ファイル名検索

mdfindコマンドはファイル名だけでなくファイル内容にも引っかかります。この為、拡張子「java」のファイルをリストアップする為にはgrepで拡張子フィルタします。

$ mdfind .java | grep -e "\.java$"
/Users/~/source/r/release/com/google/android/gms/safetynet/R.java
/Users/~/source/r/release/android/arch/core/R.java
/Users/~/source/r/release/android/support/v4/R.java
/Users/~/source/r/release/com/google/android/gms/clearcut/R.java
/Users/~/source/r/release/com/google/android/gms/ads/R.java

    :
  (snip)

OS内の全ての~.javaファイルパスがリストアップされました。

全文検索

mdfind検索はファイル内容にも引っかかる為以下で良いように思います。

$ mdfind System.out.println | grep -e "\.java$"

ですがmdfindのインデクシングはファイル内容に関しては正確性と即効性が不足していると思われ、上手く引っかかってくれません。

Linux同様、リストアップされた結果をxargsコマンドで一行ずつgrepに渡してやる方が確実です。

$ mdfind .java | grep -e "\.java$" | xargs grep System.out.println
/Users/~/Hoge3.java:                               System.out.println();
/Users/~/workspace/snippet/src/snippet/Hoge.java:  System.out.println("hoge");
/Users/~/Hoge2.java:                               System.out.println()
    :
  (snip)

全~.javaの中から「System.out.println」文字列を含むjavaファイルがリストアップされました。

インデックス更新

MacOSXはファイルを作成した時点でファイル名はインデクシングされます。mdimportやmdutilでインデックス更新する必要は在りません。

まとめ

ファイル名で検索する分にはmdfindを覚えておけば苦労しません。


-mac

執筆者:

関連記事

UserAgent判定JSライブラリ「UAParser.js」と「Platform.js」の比較

(私はUAParser.jsを使っています) ネットを探すとUA文字列を解析してブラウザ判定をするコードが一杯出てきます。 でもUA解析プログラムを自前で作ってシステムに組み込むとなると、新しいブラウ …

MacOSXにSSH接続

MacOSX Mojave(10.14.4) リンゴマークから「システム環境設定…」をクリック。 「リモートログイン」にチェック。 ssh ユーザ名@MacOSXのIP C:\Users\ …


shingo nakanishi。東京で消耗中の職歴20年越え中年ITエンジニアです。「生涯現役プログラマを楽しむ」ことができる働き方探しをライフワークにしています。

19歳(1996年)から書き始めた個人日記が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。