私たちの毎日のフィードファイルのサイズは平均2GBです。これらのファイルは、月末に1つのZipファイルにアーカイブされ、ネットワーク共有に保存されます。時々、それらのファイルで特定のレコードを検索する必要があります。これを行うには、リモートデスクトップで共有サーバーに接続し、ファイルを一時フォルダーに解凍し、grep(またはPowerShell)検索を実行してから、一時フォルダーを削除します。現在、サーバーのディスク容量が不足しているため、すべてを一時フォルダーに解凍することはお勧めしません。ディスクまたはネットワークリソースへの影響を最小限に抑えて、これらのzipファイルで正規表現検索を実行する効率的な方法は何ですか?
PowerShell Community Extensions (PSCX)には、Read-Archive
およびExpand-Archive
コマンドレットが含まれていますが、(まだ?)必要なものを非常に単純にするナビゲーションプロバイダーは含まれていません。そうは言っても、Read-Archive
とExpand-Archive
を使用できます。このテストされていないビットのようなもの
Read-Archive -Path foo.Zip -Format Zip | `
Where-Object { $_.Name -like "*.txt" } | `
Expand-Archive -PassThru | select-string "myRegex"
アーカイブ全体を抽出せずに検索できます。
Powershell Community Extensions (PSCX) にはZip関連のコマンドレットがいくつかあります。しかし、彼らがあなたが望むことをするだろうとは思いません(私はそれについて完全に間違っているかもしれませんが)。代わりに、.Net Zip Library (DotNetZip) を使用します。これにより、基本的にアーカイブ内のファイルの名前を一覧表示し、必要なファイルだけを抽出できます。