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

目次
siftコマンドについての概要と詳細
siftコマンドとは
sift
コマンドは、Go言語で実装された高速な全文テキスト検索ツールです。Linux、UNIX系OS、macOS、Windowsなどクロスプラットフォーム対応で、grep
やag
(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などと用途に合わせて使い分けるのがおすすめです。