sábado, 11 de abril de 2009

Manejando archivos comprimidos y descomprimidos uniformemente

Cuando miras en un archivo log u otro archivo que están comprimidos y rotados automáticamente, es muy útil el estar habilitado para tratar con ellos de forma uniforme, la siguiente función bash hace eso:

function data_source ()
{
local F=$1

# strip the gz if it's there
F=$(echo $F | perl -pe 's/.gz$//')

if [[ -f $F ]] ; then
cat $F
elif [[ -f $F.gz ]] ; then
nice gunzip -c $F
fi
}

Ahora cuando deseas procesar los archivos, puedes usar:

for file in * ; do
data_source $file | ...
done

Si tienes archivos bzip2, solo modifica la función data_source para que revise eso tambien.

Fuente.

No hay comentarios: