Lê arquivos de conteúdo específicos de arquivos tar.gz sem extrair

1

Eu desejo escrever o resultado dessas condições abaixo em um arquivo:

  1. em uma pasta específica, eu tenho muitos arquivos tar.gz .
  2. cada arquivo tar.gz contém o arquivo .dat em subpastas.
  3. Desejo obter o caminho completo desses arquivos .dat , se eu encontrar nele uma palavra específica ( ERROR24 ).
  4. tudo isso sem extrair os arquivos tar.gz

Eu encontrei e testei o abaixo que escreve em um arquivo o resultado, mas não sei como procurar em um arquivo tar.gz .

grep -rlw --include="*.dat" -e "ERROR24" /home/tests/logs > /home/files/data/result/listErrors.txt

Você pode ajudar a atualizar o anterior para obter o mesmo resultado, mas pesquisando em tar.gz arquivos?

    
por JamesJimmy 01.11.2017 / 14:53

2 respostas

1

Como mencionado nos comentários, você precisa usar zgrep em arquivos compactados, mas o que você está fazendo é adicionar -r à lista de opções, o que não é suportado por zgrep que vem com o Ubuntu .

-r é usado para o percurso recursivo da árvore de diretórios. Podemos fazer o mesmo com o comando find e usar -exec flag para executar zgrep em cada arquivo compactado encontrado.

Como não tenho nenhum exemplo de arquivos que você usa, o comando abaixo é apenas um exemplo. Ajuste conforme necessário:

find -type f -name "*.tar.gz" -exec zgrep -a "ERROR24" /home/tests/logs > /home/files/data/result/listErrors.txt  \;

Observe que -l aqui não pode ser usado, porque apenas lista o nome do arquivo do próprio arquivo. Como alternativa, você sempre pode usar zcat e filtrar sua saída com grep , mas isso provavelmente é mais incômodo do que o necessário.

    
por Sergiy Kolodyazhnyy 03.11.2017 / 22:24
0

Se você quer dizer apenas ver o que está dentro do arquivo, você pode simplesmente alterar o que ele abre ou faz no menu do botão direito sempre que você clicar no arquivo. Como na redefinição do aplicativo / ação padrão.

Eu sei que para muitos arquivos a ação padrão agora é montá-lo ... por qualquer motivo ou extrair automaticamente.

Ou você está procurando uma solução orientada para linha de comando?

    
por user754556 01.11.2017 / 15:33