¿Cómo extraer rápidamente todo tipo de archivos archivados desde la línea de comandos?

11

Muchas veces necesito extraer diferentes tipos de archivos archivados usando commad-line. Pero no todo el tiempo recuerdo el comando exacto para cualquier tipo de archivo. Entonces, tengo que perder el tiempo y buscar de nuevo. ¿Cómo puedo evitar esto?

Radu Rădeanu
fuente
1
Vea también atool, con el cual puede extraer / empacar múltiples formatos: vea la respuesta que le di a esta pregunta: command-line-archive-manager-extracter . Esta pregunta también es un duplicado de esa, por lo que probablemente deberían fusionarse.

Respuestas:

15

El dtrxcomando es tu amigo en ese asunto.

Descomprime cualquier archivo de almacenamiento adivinando su tipo. También se asegurará de que los archivos que descomprimas se colocarán en un nuevo directorio; evitando estropear el directorio de trabajo actual con toneladas de archivos.

Instalar en pc

sudo aptitude install dtrx

Uso

dtrx stuff.zip
Thomasleveil
fuente
11

Puede usar el siguiente script de shell (lo nombré extracty lo puse ~/bin):

#! / bin / bash

if [$ # -lt 1]; entonces
  echo "Uso:` basename $ 0` ARCHIVOS "
  salida 1
fi

# Encontré la siguiente función en https://unix.stackexchange.com/a/168/37944 
# que mejoré un poco. Muchas gracias a Sydo por esta idea.
extracto () {
    para arg en $ @; hacer
        si [-f $ arg]; entonces
            case $ arg en
                * .tar.bz2) tar xjf $ arg ;;
                * .tar.gz) tar xzf $ arg ;;
                * .bz2) bunzip2 $ arg ;;
                * .gz) gunzip $ arg ;;
                * .tar) tar xf $ arg ;;
                * .tbz2) tar xjf $ arg ;;
                * .tgz) tar xzf $ arg ;;
                * .zip) descomprimir $ arg ;;
                * .Z) descomprime $ arg ;;
                * .rar) rar x $ arg ;; # 'rar' debe estar instalado
                * .jar) jar -xvf $ arg ;; # 'jdk' debe estar instalado
                *) echo "'$ arg' no se puede extraer a través de extract ()" ;;
            esac
        más
            echo "'$ arg' no es un archivo válido"
        fi
    hecho
}

extraer $ @

No olvide hacer que el script sea ejecutable:

chmod +x ~/bin/extract

Uso:

extraer archivo_1 archivo_2 ... archivo_n 
Radu Rădeanu
fuente
Buena esa. Encuentro que zip a veces se extrae en el directorio actual, cuando lo quiero es su propio subdirectorio. Usar descomprimir -d basename $argpodría ayudar.
crafter