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ąć?
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ąć?
Odpowiedzi:
dtrx
Komenda 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.
sudo aptitude install dtrx
dtrx stuff.zip
Możesz użyć następującego skryptu powłoki (nazwałem go extract
i 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
basename $arg
może pomóc.
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.