2009-08-08 76 views
18

我們的日常供稿文件平均大小爲2 GB。這些文件在每月月底被歸檔到一個zip文件並存儲在網絡共享中。有時我需要搜索這些文件中的某些記錄。我通過將遠程桌面連接到共享服務器,將文件解壓縮到臨時文件夾,運行grep(或PowerShell)搜索,然後刪除臨時文件夾來完成此操作。現在,由於我們的服務器磁盤空間不足,因此不再推薦將它們全部解壓到臨時文件夾。對磁盤或網絡資源影響最小的壓縮文件執行正則表達式搜索的有效方法是什麼?如何在壓縮文本文件中查找文本模式?

回答

22

zgrep在Linux上。如果你在Windows上,你可以下載GnuWin,其中包含一個zgrep的Windows端口。

+1

爲了清楚起見,它在「常規」zip文件以及'gzip'文件中進行搜索。 – Nate 2009-08-08 20:39:55

+1

@Nate不完全正確。它將使用gzip,它可能與「常規」zip文件有問題,導致它僅解壓縮存檔中的第一個壓縮文件。 – dstibbe 2012-06-06 09:47:31

2

Powershell社區擴展(PSCX)中有一些與zip相關的命令行開關。我不認爲他們會做你想做的事情(但我可能完全錯了)。相反,我會使用.Net Zip Library (DotNetZip),它允許您基本上列出檔案中文件的名稱,然後提取您想要的文件。

3

PowerShell Community Extensions(PSCX)包括Read-ArchiveExpand-Archive的cmdlet,但不(沒?)包括一個導航提供這將讓你想很簡單的東西。也就是說,你可以使用 Read-ArchiveExpand-Archive。類似這樣的東西未經測試位

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

會讓你搜索,而不會提取整個檔案。