Claro. Basta usar -tv
para listar o conteúdo com seus tamanhos. Por exemplo,
% tar -tvzf sometools2.tar.gz
-rw-r--r-- madler/admin 3442 2005-02-27 21:40 pngdat.c
-rw-r--r-- madler/admin 24938 2005-02-27 21:39 infgen.c
Se você quiser adicionar os tamanhos (como du
), use awk
:
% tar -tvzf sometools2.tar.gz|awk '{ s += $3 } END { print s }'
28380
Para um arquivo .tar.gz
incorporado, você precisará fazer isso individualmente quando encontrá-los, enviando-os para stdout
com -O
:
% tar -tvzf imbed.tar.gz
-rw-r--r-- madler/staff 505 2012-02-12 00:06 lucas.c
-rw-r--r-- madler/staff 27913 2005-03-20 11:10 lzwtry.c
-rw-r--r-- madler/staff 8314 2005-02-27 21:42 sometools2.tar.gz
% tar -xOzf imbed.tar.gz sometools2.tar.gz | tar -tvzf - | awk '{ s += $3 } END { print s }'
28380
Você pode escrever um script para encontrá-los na -tv
output e depois extraí-los e até mesmo recursivamente. Vou deixar isso como um exercício para o leitor.
Note que estas opções são para o GNU tar, que é o que está no Linux e no Mac OS X. As opções para o BSD podem ser diferentes.