grep – Buscando una cadena en varios archivos zip

Pregunta:

Estoy trabajando en SunOS 5.10. Tengo una carpeta que contiene alrededor de 200 archivos zip. Cada archivo zip contiene solo un archivo de texto. Me gustaría buscar una cadena específica en todos los archivos de texto en todos los archivos zip.

Intenté esto (que busca cualquier archivo de texto en el archivo zip que contenga la cadena "ORA-") pero no funcionó.

zipgrep ORA-1680 *.zip

¿Qué es lo correcto de hacerlo sin descomprimir los archivos zip?

Respuesta:

En general, no es posible buscar contenido dentro de un archivo comprimido sin descomprimirlo de una forma u otra. Dado que zipgrep es solo un shellscript, envolviendo descomprimir y egrep en sí mismo, también puede hacerlo manualmente:

for file in *.zip; do unzip -c "$file" | grep "ORA-1680"; done

Si solo necesita la lista de archivos zip coincidentes, puede usar algo como:

for file in *.zip; do
    if ( unzip -c "$file" | grep -q "ORA-1680"); then
        echo "$file"
    fi
done

De esta manera, solo descomprime a la salida estándar (es decir, a la memoria) en lugar de descomprimir los archivos al disco. Por supuesto, puede intentar simplemente grep -a los archivos zip, pero dependiendo del contenido del archivo y su patrón, puede obtener falsos positivos y / o falsos negativos.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım