Eu tenho um monte de arquivos de texto / logs, que eu gostaria de empacotar em um arquivo tar compactado com gzip, dizer:
cd /tmp
echo "My Content One" > aaa.log
echo "My Content OneA" >> aaa.log
echo "My Content Two" > bbb.log
echo "My Content TwoB" >> bbb.log
tar czvf test.tgz *.log
Agora, se eu abrir isso com less test.tgz
, receberei uma lista de arquivos igual à tar tzvf test.tgz
:
-rw-rw-r-- user/user 31 2017-10-29 03:10 aaa.log
-rw-rw-r-- user/user 31 2017-10-29 03:10 bbb.log
Primeiro, eu encontrei o link , e tentei configurar no meu ~/.bashrc
:
alias tgzless='LESSOPEN="|tar --to-stdout -zxf %s" less'
Agora posso fazer tgzless test.tgz
, e isso imprime o conteúdo concatenado de todos os arquivos:
My Content One
My Content OneA
My Content Two
My Content TwoB
... mas infelizmente não imprime os nomes dos arquivos, então eu realmente não sei qual parte pertence onde.
Depois, encontrei , e tentei este comando:
gzip -dc test.tgz | less
Agora, isso irá imprimir tanto o cabeçalho de um arquivo quanto o conteúdo do arquivo - infelizmente o cabeçalho do arquivo é binário e difícil de ler - parece algo como isso dentro de less
:
aaa.log^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@0000664^@0001750^@0001750^@00000000037^@131752
34246^@014636^@ 0^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ustar
^@user^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@user^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@My Content One
My Content OneA
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
...
... por isso é difícil de ler (note que gzip -dc test.tgz | tar -tf - | less
fornece apenas uma listagem de nomes de arquivos, embora menos detalhado que tar tzvf
)
Então, posso configurar um alias de alguma forma usando esses comandos padrão, que imprimem todo o conteúdo do arquivo em um arquivo tar.gz, de tal forma que primeiro o nome do arquivo seja impresso (de preferência em tar tzvf
format, com nome de usuário, permissão e timestamp), e depois o seu conteúdo?