Existe uma única ferramenta de linha de comando gratuita/de código aberto para extrair todos os formatos de arquivo/compactação?

Existe uma única ferramenta de linha de comando gratuita/de código aberto para extrair todos os formatos de arquivo/compactação?

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 taroutros utilitários, mas não consigo mais encontrar isso.

Atualizar: Como posso configurar algo como atoolnão usar unzippara 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 alscomando fornecido, que lista o conteúdo de qualquer formato de arquivo suportado.

O comando principal atoolusa 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 ~/.atoolrce 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 ararquivos e tararquivos 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/localseu diretório inicial, você precisa editar os arquivos /usrou recompilar). /usr/share/avfs/extfs/ext-uzipé o script para lidar com .ziparquivos, altere-o se não quiser usar /usr/bin/unzip. Você pode conseguir usar 7z: tente editar /usr/share/avfs/extfs/extfs.inie altere a linha ext-uzippara u7z .zip.

Responder4

arquivo de bibliotecaé umArquivo multiformato e biblioteca de compactaçãoque suportamuitos formatos de arquivo e compactação.

bsdtare bsdcpiosão interfaces de linha de comando com uma API tarsemelhante a uma cpiosemelhante, 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.tarcom um comando tradicional tar.

informação relacionada