#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