Utilitário para cat / gunzip uma lista de arquivos

2

Existe um utilitário Linux comumente instalado que terá uma lista de arquivos e cat ou gzip -d (== zcat ) baseados no fato de o arquivo estar compactado?

Um exemplo de onde eu precisava disso é quando eu quero examinar os arquivos /var/log/messages , incluindo os arquivos com login de log ( /var/log/messages-{date}.gz ) e o arquivo atual.

Provavelmente adicionarei algo como o seguinte ao meu ~/.zshrc :

catz () {
    local file
    for file ; do
        case $file in
            *gz*) gzip -d < $file ;;
            *bz*) bzip -d < $file ;;
            *xz*|*lz*) xz -d < $file ;;
            *) cat $file ;;
        esac
    done
}

Mas nem sempre estou em uma máquina em que tenho meu rc instalado, por isso esperava uma solução mais geral.

    
por benizi 09.11.2011 / 18:18

2 respostas

2

less faz isso.

less /var/log/messages*

Se você direcionar a saída de less para outro programa, less se comportará como cat ou gunzip -c e não paginará a saída.

    
por 09.11.2011 / 18:37
1

A "solução mais geral" que você está procurando é treinar seus dedos para digitar zcat -f … em vez de tentar alternar entre zcat e cat .

A propósito:

  • zgrep pesquisará os arquivos compactados e descompactados sem um sinalizador adicional.
  • bzcat -f se comporta como zcat -f - ambos irão simplesmente produzir (sem descompactar) arquivos que não estão em seu formato de compactação nativo, em vez de entender que é um formato compactado diferente e sub-separar o programa de descompactação correto.
por 30.01.2012 / 18:04