2009-08-08 10 views
18

Il nostro file di alimentazione giornaliero ha una media di 2 GB. Questi file vengono archiviati in un unico file zip alla fine di ogni mese e archiviati in una condivisione di rete. Di tanto in tanto, ho bisogno di cercare determinati record in quei file. Lo faccio collegandomi dal desktop remoto al server condiviso, decomprimendo i file in una cartella temporanea, eseguendo la ricerca grep (o PowerShell) e quindi eliminando la cartella temporanea. Ora, poiché il nostro server sta esaurendo lo spazio su disco, non è più consigliato rimuoverli tutti in una cartella temporanea. Qual è un modo efficace per eseguire una ricerca regolare su quei file compressi con un impatto minimo sul disco o sulle risorse di rete?Come posso grep per un modello di testo in un file di testo compresso?

risposta

22

zgrep su Linux. Se sei su Windows, puoi scaricare GnuWin che contiene una porta Windows di zgrep.

+1

E solo per chiarezza, cerca all'interno di file zip "normali", così come file 'gzip'. – Nate

+1

@Nate Non completamente vero. Userà gzip, che può avere problemi con i file zip "normali", causando la decompressione solo del primo file zippato nell'archivio. – dstibbe

2

Ci sono alcuni comandi relativi a zip nelle estensioni della comunità di Powershell (PSCX). Non penso che farebbero ciò che vuoi comunque (potrei sbagliarmi completamente comunque). Invece vorrei usare .Net Zip Library (DotNetZip) che consente di elencare essenzialmente i nomi dei file in un archivio, quindi estrarre solo quelli che si desidera.

3

Il PowerShell Community Extensions (PSCX) include i cmdlet Read-Archive e Expand-Archive, ma non (ancora?) Includere un provider di navigazione che renderebbe ciò che si desidera molto semplice. Detto questo, è possibile utilizzare Read-Archive e Expand-Archive. Qualcosa di simile a questo bit non testato

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

consentirebbe di cercare senza estrarre l'intero archivio.

Problemi correlati