Wie kann man schnell alle Arten von archivierten Dateien aus der Kommandozeile extrahieren?

11

Oft muss ich verschiedene Arten von archivierten Dateien mit Commad-Line extrahieren. Aber nicht immer erinnere ich mich an den genauen Befehl für jede Art von Dateiarchiv. Also muss ich Zeit verschwenden und erneut suchen. Wie kann ich das vermeiden?

Radu Rădeanu
quelle
1
Siehe auch atool, mit dem Sie mehrere Formate extrahieren / packen können: Siehe die Antwort, die ich auf diese Frage gegeben habe: Befehlszeilen-Archiv-Manager-Extraktor . Diese Frage ist auch ein Duplikat dieser Frage, daher sollten sie wahrscheinlich zusammengeführt werden.

Antworten:

15

Der dtrxBefehl ist dein Freund in dieser Angelegenheit.

Es dekomprimiert jede Archivdatei, indem es ihren Typ errät. Außerdem wird sichergestellt, dass die von Ihnen dekomprimierten Dateien in einem neuen Verzeichnis abgelegt werden. Vermeiden Sie es, das aktuelle Arbeitsverzeichnis mit Tonnen von Dateien durcheinander zu bringen.

Installieren

sudo aptitude install dtrx

Verwendungszweck

dtrx stuff.zip
Thomasleveil
quelle
11

Sie können das folgende Shell-Skript verwenden (ich habe es benannt extractund eingefügt ~/bin):

#! / bin / bash

wenn [$ # -lt 1]; dann
  echo "Verwendung:` basename $ 0` FILES "
  Ausfahrt 1
fi

# Ich habe die folgende Funktion unter /unix//a/168/37944 
# gefunden, die ich ein wenig verbessert habe. Vielen Dank an sydo für diese Idee.
Extrakt () {
    für arg in $ @; machen
        if [-f $ arg]; dann
            case $ arg in
                * .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) entpacke $ arg ;;
                * .Z) dekomprimiere $ arg ;;
                * .rar) rar x $ arg ;; # 'rar' muss installiert sein
                * .jar) jar -xvf $ arg ;; # 'jdk' muss installiert sein
                *) echo "'$ arg' kann nicht über extract () extrahiert werden" ;;
            esac
        sonst
            echo "'$ arg' ist keine gültige Datei"
        fi
    getan
}}

extrahiere $ @

Vergessen Sie nicht, das Skript ausführbar zu machen:

chmod +x ~/bin/extract

Verwendungszweck:

Datei extrahieren_1 Datei_2 ... Datei_n 
Radu Rădeanu
quelle
Schön. Ich finde, dass zip manchmal in das aktuelle Verzeichnis extrahiert, wenn ich möchte, dass es ein eigenes Unterverzeichnis hat. Die Verwendung von unzip -d basename $argkönnte helfen.
Crafter