Конечно. Просто используйте -tv
чтобы перечислить содержимое с их размерами. Например
% 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
Если вы хотите сложить размеры (например, du
), вы можете использовать awk
:
% tar -tvzf sometools2.tar.gz|awk '{ s += $3 } END { print s }'
28380
Для встроенного файла .tar.gz
вам нужно будет сделать это индивидуально, когда вы найдете их, отправив их на стандартный stdout
с помощью -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
Вы можете написать скрипт, чтобы найти их в выводе -tv
а затем извлечь их и даже сделать это рекурсивно. Я оставлю это как упражнение для читателя.
Обратите внимание, что эти параметры предназначены для GNU tar, то есть для Linux и Mac OS X. Опции для BSD tar могут быть разными.