
Com umnúmero crescentede formatos de arquivo de arquivo/compactação, existe uma única ferramenta de linha de comando gratuita/de código aberto para governar todos eles? Talvez algo com um conjunto consistente/unificado de sinalizadores? (observe meu amigoreferência implícita ao tar)
Certa vez, encontrei um conjunto de aliases destinados a simplificar bastante a tarefa de compactar/descompactar arquivos com ligações a tar
outros utilitários, mas não consigo mais encontrar isso.
Atualizar:
Como posso configurar algo como atool
não usar unzip
para extrair arquivos zip (que aparentemente não suportam arquivos maiores que 4 GB) e usá-los gunzip
?
$ aunpack large_file.zip
error: Zip file too big (greater than 4294959102 bytes)
Archive: large_file.zip
warning [large_file.zip]: 1491344848 extra bytes at beginning or within zipfile
(attempting to process anyway)
error [large_file.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
aunpack: unzip ...: non-zero return-code
Responder1
eu usouma ferramenta. Ele faz o trabalho. Funciona com muitos, embora não com todos os formatos:
alcatrão, gzip, bzip2, bzip, lzip, lzop, lzma, zip, rar, lha, arj, arc, p7zip etc.
Essas ferramentas de compactação ainda são necessárias, embora uma ferramenta seja simplesmente um front-end para elas.
Gosto particularmente do als
comando fornecido, que lista o conteúdo de qualquer formato de arquivo suportado.
O comando principal atool
usa seus próprios sinalizadores para extrair arquivos (passando os sinalizadores apropriados para as ferramentas de extração subjacentes específicas).
Ah, e está nos repositórios de algumas distribuições (o Fedora no meu caso, embora, pelo que me lembro, quando usei o Ubuntu, ele não estava em seus repositórios. E eu instalei a partir de um tarball.).
Atualização em repositórios: atool está nos repositórios das seguintes distribuições (apenas versões atuais verificadas):
- Fedora
- Debian (obrigado @terdon, e, presumivelmente, são derivados como o Ubuntu)
- Ubuntu (qed e, presumivelmente, derivados como Mint)
- Abra o Suse
- CentOS (e, presumivelmente, RHEL)
- Arco Linux
Tenho certeza de que existem outras... plausivelmente, distribuições mais modernas.
Resposta para a pergunta atualizada "Como posso configurar algo como uma ferramenta para não usar o descompactação para extrair arquivos zip ... e usar o gunzip":
Edite o arquivo de configuração do atool ~/.atoolrc
e adicione a linha:
path_unzip /usr/bin/gunzip
com o caminho correto para o seu programa gunzip.
Veja a página de manual para a lista completa de possíveis variáveis que você pode colocar neste arquivo de configuração, das quais existembastante. Se as opções de linha de comando necessárias para gunzip forem diferentes de unzip, pode ser necessário modificar a própria fonte da ferramenta (perl).
Responder2
Aqui está uma pequena função shell que cuida de vários tipos de arquivos.
extract () {
if [ ! -f "$1" ] ; then
echo "'$1' does not exist."
return 1
fi
case "$1" in
*.tar.bz2) tar xvjf "$1" ;;
*.tar.xz) tar xvJf "$1" ;;
*.tar.gz) tar xvzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) rar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.tbz2) tar xvjf "$1" ;;
*.tgz) tar xvzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.xz) xz -d "$1" ;;
*.7z) 7z x "$1" ;;
*.a) ar x "$1" ;;
*) echo "Unable to extract '$1'." ;;
esac
}
Eu encontrei oversão originaldesta função em algum lugar online e modifiquei-a um pouco para extrair ar
arquivos e tar
arquivos compactados xz.
Responder3
OAVFSfilesystem apresenta uma visão do sistema de arquivos onde cada arquivo compactado (por exemplo, /path/to/foo.zip
) é acessível como um diretório ( ~/.avfs/path/to/foo/zip#
para este exemplo). AVFS fornece acesso somente leitura aos formatos de arquivo compactados mais comuns.
mountavfs
cp -Rp ~/.avfs$PWD/large_file.zip\# extraction_directory
O Avfs usa auxiliares externos que podem ser facilmente configurados editando arquivos /usr
(infelizmente, no avfs 1.0 não há como usar arquivos em /usr/local
seu diretório inicial, você precisa editar os arquivos /usr
ou recompilar). /usr/share/avfs/extfs/ext-uzip
é o script para lidar com .zip
arquivos, altere-o se não quiser usar /usr/bin/unzip
. Você pode conseguir usar 7z: tente editar /usr/share/avfs/extfs/extfs.ini
e altere a linha ext-uzip
para u7z .zip
.
Responder4
arquivo de bibliotecaé umArquivo multiformato e biblioteca de compactaçãoque suportamuitos formatos de arquivo e compactação.
bsdtar
e bsdcpio
são interfaces de linha de comando com uma API tar
semelhante a uma cpio
semelhante, respectivamente.
Portanto, se você já estiver familiarizado com qualquer um desses utilitários, terá uma interface de linha de comando a menos para aprender.
Para descompactar seu arquivo .iso
, .zip
, .cab
, .7z
, .tar.gz.xz.bz2
..., é só:
bsdtar xf file.<ext>
Como você faria tar xf file.tar
com um comando tradicional tar
.