MacのTerminalで高速に全文検索をする

MacにはSpotlightというインデックス式の高速検索ツールがあります。

これを利用すると全文検索が可能です。

TerminalからSpotlightの機能を使うには、mdfindコマンドを利用します。

mdfind "hogehoge"

フォルダを指定するには、-onlyinオプションをつけます。

mdfind -onlyin . "hogehoge"

ここまでの方法だと、ファイル名とファイル内容両方が検索対象になってしまうので、ファイル内容だけを検索対象にしたい場合は以下のようにします。

mdfind -onlyin . "kMDItemTextContent=='*hogehoge*'"

さらにファイル名に条件を加えたい場合には、以下のように条件を加える事もできます。

mdfind -onlyin . "kMDItemTextContent=='*hogehoge*' && kMDItemDisplayName == '*.xml'"

さらに細かい検索式を見たい場合にはAppleの公式ドキュメントを利用します。

https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/QueryFormat.html#//apple_ref/doc/uid/TP40001849

動作のちょっとした改善

Spotlightだけだとファイルのどこにヒットしたのかが不明なので、これを知りたい場合にはgrepを組み合わせます。

mdfind -onlyin . "kMDItemTextContent=='*hogehoge*'" | xargs grep "hogehoge"

findを利用した場合とほぼ同等の結果が得られますが、こちらを利用した場合のほうが細かく、また高速に検索をすることができます。

(検索条件を二重に書くところはちょっとぎこちない気もします)

参考

AWSを利用した導入事例のご紹介

実際に構築を行ったAWSの事例を紹介しています。導入の目的に近い事例をご覧いただくと、実際の構成例やメリット、注意点などが把握できます。

ブックオフコーポレーション株式会社様
第一生命保険株式会社様
株式会社電通様
株式会社LIFULL様
株式会社リブセンス様
TBSアナウンス部様
明治大学様
拓殖大学様