У меня есть файл .tar.bz2, который я хочу распаковать и извлечь с помощью инструмента командной строки 7-zip.
Так что в основном я ищу эквивалент
tar -xjf foo.tar.bz2
с 7-zip есть только опция «x» для извлечения, так что делать
7z x foo.tar.bz2
дает мне раздутый файл foo.tar вместо распаковки всех каталогов внутри tar. Какой соответствующий вариант для 7z?
Ответы:
С 7zip вы должны выполнить команду дважды: один раз для распаковки и еще раз для распаковки. Формат файла tar - это всего лишь «пачка» всего, что застряло от начала до конца. Затем весь tar-файл сжимается с использованием различных алгоритмов сжатия, в вашем примере bzip. В основном полученный файл имеет два слоя. Когда вы «извлекаете» слой bzip, вы получаете файл tar, затем, когда вы извлекаете файл tar, вы получаете кучу отдельных файлов.
7zip не обрабатывает несколько слоев одновременно, хотя может обрабатывать оба слоя:
На самом деле стандартные инструменты Unix работают так же:
Однако команда unix
tar
имеет удобные функции, которые вызывают вторичные этапы сжатия и распаковки с использованием другой программы до / после обработки части tar. В основном-j
аргумент вызываетbzip2
/bunzip2
, вы просто не видите второй шаг. Аналогично-z
позвонюgzip
/gunzip
и т. Д.источник
Хотя вы не можете сделать это в одной команде, вы можете использовать конвейер оболочки для объединения двух команд 7z в одну командную строку следующим образом:
источник
Как насчет более короткой версии комбинации 7z и tar, использующей стандартный выход и трубы?
источник
источник