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 contiene la cadena "ORA-") pero no funcionó.
zipgrep ORA-1680 *.zip
¿Qué es lo correcto de hacerlo sin descomprimir los archivos zip?
Respuestas:
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, que se descomprime y egrep, puede hacerlo manualmente:
Si solo necesita la lista de archivos zip coincidentes, puede usar algo como:
De esta manera, solo se descomprime en stdout (es decir, en memoria) en lugar de descomprimir los archivos en el disco. Por supuesto, puede intentar solo
grep -a
los archivos zip, pero dependiendo del contenido del archivo y su patrón, puede obtener falsos positivos y / o falsos negativos.fuente
unzip -c
descomprime el archivo a stdout. No escribe todo el archivo sin comprimir en ningún otro lugar.unzip
usos-p
para la transmisión a la tubería!zipgrep
toma un solo archivo Para que funcione en varios archivos, colóquelo en un bucle:fuente
for i in *.zip; do zipgrep TextToSearch $i && echo $i; done
El sistema de archivos AVFS presenta una vista del sistema de archivos donde
/path/to/foo.zip
se puede acceder a cada archivo como un directorio~/.avfs/path/to/foo.zip#
. Es un sistema de archivos FUSE , que puede instalar en Solaris. AVFS proporciona acceso de solo lectura a los formatos de archivo de almacenamiento más comunes.fuente