sift:マルチスレッドで爆速全文検索ファイル検索コマンド

sift

siftコマンドについての概要と詳細

siftコマンドとは

siftコマンドは、Go言語で実装された高速な全文テキスト検索ツールです。Linux、UNIX系OS、macOS、Windowsなどクロスプラットフォーム対応で、grepag(The Silver Searcher)、rg(ripgrep)などの代替として利用できます。大規模なソースコードリポジトリやディレクトリ構造の中から、高速かつ柔軟にパターン検索を実行できるのが特徴です。

主な用途

  • ソースコードやテキストファイル、ログファイルなどの全文検索
  • 複雑なディレクトリや大量のファイルからキーワード・パターンの高速抽出
  • grepの高機能・高速な代替ツールとしての利用

主な特徴

  • 高速な全文検索:Go言語による並列処理で膨大なファイル群も高速検索
  • クロスプラットフォーム対応:Linux、macOS、Windowsなどで利用可能
  • 柔軟なフィルタリング:ファイル名・拡張子や除外パターン、サイズ・更新日フィルタにも対応
  • .gitignore等の自動考慮:不要なファイルやディレクトリを自動除外
  • 色分け表示:検索結果やキーワード部分をカラーで強調
  • 正規表現サポート:PCRE互換の強力な正規表現が利用可能
  • シンプルなバイナリ:単体バイナリでインストールや利用が簡単

基本的な使い方

sift [検索パターン] [ディレクトリやファイル]
  • sift error:カレントディレクトリ以下で「error」を含む行を検索
  • sift -i failed:大文字小文字を区別せず「failed」を検索
  • sift '^func ':Go言語の関数定義を抽出(正規表現)
  • sift --ext=py import:拡張子が.pyのファイルだけ「import」を検索
  • sift --exclude=vendor:vendorディレクトリを除外して検索
  • sift TODO ~/project/:指定ディレクトリ以下を検索

主なオプション一覧

オプション説明
-i大文字小文字を区別しない検索
-w単語単位で完全一致検索
-v一致しない行を表示
-n行番号を表示
-lマッチしたファイル名のみ表示
-cマッチ件数のみ表示
--ext=[拡張子]指定した拡張子のファイルのみ検索(例:--ext=py)
--exclude=[パターン]指定したパターンのファイルやディレクトリを除外
--size [範囲]ファイルサイズを範囲指定して検索
--mtime [日数]指定日数以内に更新されたファイルのみ検索

インストール方法

RPM系(RedHat, CentOS, Fedoraなど)
$ sudo dnf install sift 

Debian系(Debian, Ubuntuなど)
$ sudo apt install sift 


その他・最新版の導入: 公式GitHubから各OS用バイナリまたはソースコードを取得可能。

まとめ

siftコマンドは、高速かつ柔軟なテキスト検索を実現するモダンな全文検索ツールです。大規模なソースコードやディレクトリの中から素早くパターン抽出ができ、開発やサーバ運用、日常業務の効率化に役立ちます。grepやag、pt、rgなどと用途に合わせて使い分けるのがおすすめです。