Можно ли узнать, сколько места занимают файлы внутри .tar.bz2

#linux #bash #tar #du

#linux #bash #tar #du

Вопрос:

Я обычно использую du -h (-h для удобочитаемого формата), чтобы узнать, сколько места занимают мои файлы. Я сжал некоторые папки .tar.bz2 , но я не уверен, хорошо ли это работает. Я имею в виду, если все файлы были правильно сжаты. Я знаю, что можно извлечь данный файл внутри .tar.bz2 , но мне было интересно, есть ли способ du -h проникнуть в него.

Ответ №1:

Вы могли бы сделать

 tar -jtvf file-name.tar.bz2
 

Если это недостаточно подробно, вы можете использовать awk для извлечения байтов:

 tar -jtvf asg2.tar.bz2 | awk '{print $3}'
 

И если вы хотите получить общее количество байтов, вы могли бы сделать что-то вроде:

 tar -jtvf asg2.tar.bz2 | awk '{print s =$3}' | tail -1
 

И, наконец, преобразовать его в удобочитаемый формат:

 echo $(tar -jtvf asg2.tar.bz2 | awk '{print s =$3}' | tail -1) | awk '{foo = $1 / 1024 / 1024 ; print foo "MB" }'
 

Вывод:

 0.00749779MB
 

Ответ №2:

tar.bz2 Файл bzip2 — это сжатие обычного tar архива. Таким образом, он не содержит индивидуально «сжатых» файлов.

Вы могли бы просто перечислить, с tar -tjf foo.tar.bz2 помощью этого [распакованного] достижения. Если эта команда выполнена успешно, распаковка всего foo.tar.bz2 файла сработала.

Если вы хотите сжать отдельные файлы в архиве, используйте какой-нибудь другой инструмент, например afio

Если вы хотите измерить общий размер распакованного архива (что является хорошей переоценкой совокупного размера всех архивированных файлов), попробуйте

   bunzip2 < foo.tar.bz2 | wc