2009-08-08 28 views
18

Tệp nguồn cấp dữ liệu hàng ngày của chúng tôi có kích thước trung bình 2 GB. Các tệp này được lưu trữ vào một tệp zip duy nhất vào cuối mỗi tháng và được lưu trữ trong một mạng chia sẻ. Theo thời gian, tôi có nhu cầu tìm kiếm các bản ghi nhất định trong các tệp đó. Tôi thực hiện việc này bằng cách kết nối bằng máy tính từ xa với máy chủ được chia sẻ, giải nén các tệp vào thư mục tạm thời, chạy tìm kiếm grep (hoặc PowerShell) và sau đó xóa thư mục temp. Bây giờ, bởi vì máy chủ của chúng tôi đang chạy thấp trong không gian đĩa, nó không còn được khuyến khích để giải nén tất cả chúng vào một thư mục temp. Một cách hiệu quả để thực hiện tìm kiếm regex trên các tệp được nén với tác động tối thiểu trên tài nguyên mạng hoặc đĩa là gì?Làm cách nào để có thể grep cho mẫu văn bản trong tệp văn bản được nén?

Trả lời

22

zgrep trên Linux. Nếu bạn đang sử dụng Windows, bạn có thể tải xuống GnuWin chứa cổng Windows zgrep.

+1

Và chỉ để rõ ràng, nó tìm kiếm trong các tệp zip “thông thường”, cũng như các tệp 'gzip'. – Nate

+1

@Nate Không hoàn toàn đúng. Nó sẽ sử dụng gzip, có thể có vấn đề với các tệp zip 'thông thường', khiến nó giải nén chỉ tệp nén đầu tiên trong tệp nén. – dstibbe

2

Có một số lệnh liên quan đến zip trong Tiện ích mở rộng cộng đồng Powershell (PSCX). Tôi không nghĩ rằng họ sẽ làm những gì bạn muốn tuy nhiên (tôi có thể hoàn toàn sai về điều đó mặc dù). Thay vào đó, tôi sẽ sử dụng .Net Zip Library (DotNetZip) cho phép bạn về cơ bản liệt kê tên của các tệp trong một tệp lưu trữ, sau đó trích xuất chỉ những tệp bạn muốn.

3

PowerShell Community Extensions (PSCX) bao gồm Read-ArchiveExpand-Archive lệnh ghép ngắn, nhưng không (chưa?) Bao gồm nhà cung cấp điều hướng sẽ làm những gì bạn muốn rất đơn giản. Điều đó nói rằng, bạn có thể sử dụng Read-ArchiveExpand-Archive. Một cái gì đó như thế này chưa được kiểm tra bit

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

sẽ cho phép bạn tìm kiếm mà không cần giải nén toàn bộ lưu trữ.

Các vấn đề liên quan