FreeBSDをWindowsクライアント用のファイルサーバーとして使用する場合は、クライアント側ではなくサーバー側でファイル検索を実行できる場合に便利です。
一般的な例は、特定のメタデータ基準(名前、パス、サイズ、日付など)を満たし、テキスト抽出コンテンツにいくつかのリテラルまたは正規表現を含むすべてのファイルを見つけることです。混合ファイルを含む大規模な反復ディレクトリを検索すると、.txtコメント、.docx/.xlsx文書、.pdf、.zip/.rar/.tgz/のいずれか(またはそれ以上)でコンテンツ検索が発生する可能性があります。 iso圧縮アーカイブまたは失敗した場合は、バイナリファイルの文字列にすることもできます。
最初の部分は簡単ですfind
。ファイルタイプ内で検索することも難しくありません。ただし、FreeBSDには「よく知られている」ファイルフィルタの概念はなく、プラグインフィルタを使用してファイルデータを共通の形式に変換するテキストに解析するための特定の単一APIもありません(多くの個々のファイルタイプについてはよく知られているテキスト抽出がありますが、pdf、doc/docx、xls/xlsx、アーカイブ形式、sqliteデータベース、文字列を含むバイナリファイルなど)を含むため、通常は結果に、grep
またはfind -exec
Microsoft XML抽出コードを使用することはできません。ファイル名のリストまたはストリームを作成し、拡張子に従って適切なフィルタを介して各ファイル名を渡すか、出力に渡されるすべてを収集する必要があるようです。pdftotext
unzip | sed
find
file
大規模なファイルストアでこの種のコンテンツ検索を頻繁に実行する必要がある場合は、より効率的に設計された特定のツールがありますか、それとも最も効率的なアプローチは何ですか?
更新 -私だけに興味があるだけです。ファイル別CLI直接検索。はいいいえコンテンツを索引付けし、後で索引を検索することにも少し興味があります。この質問は、ファイル単位のフィールドテキスト/正規表現検索に関連していますが、コンテンツも検索され、プレーンテキストではfind
なくテキスト抽出フィルタが異なる複数のファイル形式の場合と同じです。だからそうですいいえインデックス付きコンテンツ検索に関する既存の質問と重複しています。申し訳ありません。以前は明確ではなく、あいまいさを認識していませんでした。