Jak szybko wyodrębnić wszelkiego rodzaju zarchiwizowane pliki z wiersza poleceń?

11

Wiele razy muszę wyodrębnić różne rodzaje zarchiwizowanych plików przy użyciu linii poleceń. Ale nie zawsze pamiętam dokładne polecenie dla dowolnego typu archiwum plików. Muszę więc tracić czas i szukać ponownie. Jak mogę tego uniknąć?

Radu Rădeanu
źródło
1
Zobacz także atool, za pomocą którego możesz wyodrębnić / spakować wiele formatów: zobacz odpowiedź, którą dałem na to pytanie: wiersz poleceń-archiwum-menedżer-ekstraktor . To pytanie jest również duplikatem tego pytania, więc prawdopodobnie powinny zostać połączone.

Odpowiedzi:

15

dtrxKomenda jest twoim przyjacielem w tej sprawie.

Rozpakowuje dowolny plik archiwum, zgadując jego typ. Zapewni również, że pliki, które rozpakujesz, zostaną umieszczone w nowym katalogu; unikając bałaganu w bieżącym roboczym katalogu z mnóstwem plików.

zainstalować

sudo aptitude install dtrx

Stosowanie

dtrx stuff.zip
Thomasleveil
źródło
11

Możesz użyć następującego skryptu powłoki (nazwałem go extracti wstawiłem ~/bin):

#! / bin / bash

jeśli [$ # -lt 1]; następnie
  echo "Zastosowanie:` basename $ 0` PLIKI "
  wyjście 1
fi

# Znalazłem następującą funkcję na https://unix.stackexchange.com/a/168/37944 
#, którą trochę poprawiłem. Ogromne podziękowania dla sydo za ten pomysł.
wyciąg () {
    dla arg w $ @; zrobić
        if [-f $ arg]; następnie
            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) unzip $ arg ;;
                * .Z) rozpakuj $ arg ;;
                * .rar) rar x $ arg ;; # 'rar' musi zostać zainstalowany
                * .jar) jar -xvf $ arg ;; # 'jdk' musi zostać zainstalowany
                *) echo „Nie można wyodrębnić„ arg $ ”za pomocą extract ()” ;;
            esac
        jeszcze
            echo „$ arg” nie jest prawidłowym plikiem ”
        fi
    gotowy
}

wyodrębnij $ @

Nie zapomnij, aby skrypt był wykonywalny:

chmod +x ~/bin/extract

Stosowanie:

wypakuj plik_1 plik_2 ... plik_n 
Radu Rădeanu
źródło
Niezłe. Uważam, że zip czasami wypakowuje do bieżącego katalogu, kiedy chcę, aby był to jego własny podkatalog. Użycie rozpakowania -d basename $argmoże pomóc.
crafter