2009-08-08 8 views
18

1日のフィードファイルの平均サイズは2 GBです。これらのファイルは、毎月末に1つのzipファイルにアーカイブされ、ネットワーク共有に格納されます。時々、私はそれらのファイルの特定のレコードを検索する必要があります。私はリモートデスクトップで共有サーバーに接続し、一時フォルダーにファイルを解凍し、grep(またはPowerShell)検索を実行して、一時フォルダーを削除します。現在、サーバーのディスク領域が不足しているため、tempフォルダにすべてのファイルを解凍することは推奨されなくなりました。ディスクやネットワークリソースへの影響を最小限に抑えて、zipファイルの正規表現検索を効率的に行う方法は何ですか?ZIP形式のテキストファイルでテキストパターンをgrepするにはどうすればよいですか?

答えて

22

zgrep Linuxの場合。 Windowsの場合は、Windowsのzgrepを含むGnuWinをダウンロードできます。

+1

わかりやすくするため、「通常の」zipファイルと 'gzip'ファイルを検索します。 – Nate

+1

@Nateまったく真実ではありません。 gzipを使うと、 '通常の' zipファイルで問題が発生し、アーカイブ内の最初のzipファイルのみを解凍することができます。 – dstibbe

2

Powershell Community Extensions (PSCX)には、いくつかのジップ関連のコマンドレットがあります。私は彼らがあなたが望むことをやるとは思わない(私はそれについて完全に間違っているかもしれない)。代わりに、.Net Zip Library (DotNetZip)を使用すると、基本的にアーカイブ内のファイルの名前をリストし、必要なものだけを抽出することができます。

3

PowerShell Community Extensions(PSCX)にはRead-ArchiveExpand-Archiveコマンドレットが含まれていますが、非常に単純なものにするナビゲーションプロバイダは含まれていません。つまり、 Read-ArchiveExpand-Archiveを使用できます。このテストされていないビットのようなもの

Read-Archive -Path foo.zip -Format Zip | ` 
    Where-Object { $_.Name -like "*.txt" } | ` 
     Expand-Archive -PassThru | select-string "myRegex" 

アーカイブ全体を抽出せずに検索できます。

関連する問題