Jak rozpakować plik zip z terminala?


1413

Właśnie pobrałem plik .zip z Internetu. Chcę użyć terminala do rozpakowania pliku. Jaki jest właściwy sposób to zrobić?


3
Wyodrębnij wszystkie pliki z bieżącego folderu, możesz użyć: rozpakuj \ *. Zip
burtsevyg

2
@burtsevyg odwrotny ukośnik nie jest tam konieczny. Sprawi, że skorupa będzie traktowana \*jak dosłowny symbol gwiazdy. Wystarczy użyć, unzip *.zipaby powłoka rozszerzyła się *na wszystkie pliki kończące się na.zip
Sergiy Kolodyazhnyy

Używanie *samemu nie działało dla mnie. To spowodowało filename not matchedbłędy. \*wykonał robotę.
arman_aegit

Polecam używać i uczyć się „unar” zamiast zip, chyba że potrzebujesz określonych funkcji. „Obsługiwane formaty plików to Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt i wiele innych starych i niejasnych formatów.”
masterxilo,

Ubuntu ma już zainstalowane wiele narzędzi do kompresji / dekompresji. Uruchom apropos zipz konsoli, aby uzyskać pełną listę.
Stephen W. Wright

Odpowiedzi:


1926

Jeśli unzippolecenie nie jest jeszcze zainstalowane w systemie, uruchom:

sudo apt-get install unzip

Po zainstalowaniu narzędzia do rozpakowywania, jeśli chcesz rozpakować plik do określonego folderu docelowego, możesz użyć:

unzip file.zip -d destination_folder

Jeśli katalog źródłowy i docelowy są takie same, możesz po prostu:

unzip file.zip

83
Jeśli jesteś już w katalogu, w którym chcesz rozpakować plik, pomiń drugi i trzeci argument, tj.unzip /path/to/file.zip
Severo Raz

2
Właśnie użyłem tego polecenia. To jest przykład. Krok 1 (przeszedłem do katalogu, w którym przechowywany jest plik zip): cd /home/paf/Copy/Programming/Javascript/Json Krok 2 (rozpakowałem plik zip w katalogu, o którym właśnie wspomniałem):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
pablofiumara,

2
unzipmoże być programem domyślnym. Innymi słowy, nie musisz go instalować.
noobninja

2
@Aevi Check man pages[-d exdir] An optional directory to which to extract files.
WAKR

4
Upewnij się, że rozpakowałeś do katalogu, w przeciwieństwie do archiwów tar, może się okazać, że wiele osób zawiera dziesiątki plików w katalogu głównym swoich plików zip, to może zrobić prawdziwy bałagan !!!
Steve

230

Możesz po prostu użyć unzip.

Zainstaluj to:

apt-get install unzip

I użyj tego:

cd /path/to/file
unzip file.zip

117

Bardziej przydatnym narzędziem jest 7zzamykanie i rozpakowywanie szeregu formatów kompresji, zwłaszcza lzmaprotokół oferujący najwyższe stopnie kompresji.

To polecenie instaluje 7z:

sudo apt-get install p7zip-full

To polecenie wyświetla zawartość pliku zip:

7z l zipfile.zip

To polecenie wypakowuje zawartość zip:

7z x zipfile.zip

5
7z enie utrzymuje struktury katalogów - 7z xnie ...
assylias

2
13.10 mówi, że 7z nie istnieje. Myślę, że musi to być sudo apt-get install 7zip
nitishch

6
Myślę, że polecenie instalacji powinno być sudo apt-get install p7ziplub sudo apt-get install p7zip-fullPotrzebujesz pełnej wersji, aby uzyskać 7zpolecenie. Full jest również jedynym, który obsługuje zip i inne rodzaje formatów spośród tych dwóch.
Automatico

1
czy możesz wyjaśnić „Bardziej przydatne narzędzie”? Czy porównujesz do rozpakowania? Czy możesz podać przykłady funkcji, które sprawiają, że 7z jest bardziej użyteczny, i być może w jakich kontekstach preferowane jest 7z?
David LeBauer

1
Dla niektórych rozpakowanie jest bardziej przydatne: łatwe w użyciu i jego Nazwa do zapamiętania.
Nieśmiały Robbiani

47

Możesz użyć:

unzip file.zip -d somedir

wyodrębnić do yourpath/somedir

Jeśli chcesz wyodrębnić ścieżkę bezwzględną, użyj

sudo unzip file.zip -d /somedir

39

Korzystanie z narzędzi skryptowych: Perl i Python

Wiele odpowiedzi tutaj wspomina o narzędziach, które wymagają instalacji, ale nikt nie wspomniał, że dwa języki skryptowe Ubuntu, Perl i Python, już zawierają wszystkie niezbędne moduły, które pozwalają rozpakować archiwum zip, co oznacza, że ​​nie trzeba niczego instalować jeszcze. Po prostu użyj jednego z dwóch skryptów przedstawionych poniżej, aby wykonać zadanie. Są dość krótkie i można je nawet skondensować z poleceniem jednowierszowym.

Pyton

#!/usr/bin/env python3
import sys
from zipfile import PyZipFile
for zip_file in sys.argv[1:]:
    pzf = PyZipFile(zip_file)
    pzf.extractall()

Stosowanie:

./pyunzip.py master.zip 

lub

python3 pyunzip.py master.zip

Perl

#!/usr/bin/env perl
use Archive::Extract;
foreach my $filepath (@ARGV){
    my $archive = Archive::Extract->new( archive => $filepath );
    $archive->extract;
}

Stosowanie:

./perlunzip master.zip

lub

perl perlunzip.pl master.zip

Zobacz też


1
Dzięki dokładnie tego, czego potrzebuję. Nie mam roota i nie chcę instalować ręcznie rozpakowywania ze źródła. Można tego również użyć z '''unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
bashową

@mxmlnkn Cieszę się, że mogłem pomóc :)
Sergiy Kolodyazhnyy

30

Jeśli katalog źródłowy i docelowy są takie same, możesz po prostu:

unzip filename.zip

W systemie Ubuntu 17.04 -d wymaga z nieznanego powodu.
林果 皞

21

Wolę bsdtardo unzip/ zip. Do wyodrębnienia są dość podobne:

bsdtar -x -f /one/two/three/four.zip -C /five
unzip /one/two/three/four.zip -d /five

Jednak w przypadku zipowania bsdtarwygrywa. Powiedz, że masz te dane wejściowe:

/one/two/three/alfa/four.txt
/one/two/three/bravo/four.txt

i chcę to w pliku zip:

alfa/four.txt
bravo/four.txt

Jest to łatwe dzięki bsdtar:

bsdtar -a -c -f four.zip -C /one/two/three alfa bravo

zip nie ma takiej -dopcji jak rozpakowanie, więc nie możesz osiągnąć powyższego, chyba że cdnajpierw.


O ile chciałbym dać wygraną narzędziu Foss, najwyraźniej bsdtarnie wróży to dobrze znakom specjalnym, takim jak co najmniej jedno słowo na Blóðstokkinnliście, gdy nie kompresujesz. Nawet nie sprawdzałem podczas kompresji. Co za porażka. : / unzipporadził sobie z tym bez problemu.
Vrakfall

20

Oto szczegółowy opis opcji, które uważam za przydatne:

Polecenie: rozpakuj - [opcja] zip-path.
               -d opcjonalny katalog, do którego można wyodrębnić pliki  
               -l Wyświetl listę plików archiwalnych.
               -P hasło Użyj hasła, aby odszyfrować zaszyfrowane wpisy pliku zip (jeśli istnieją).
               -t Testuj pliki archiwalne z cykliczną kontrolą nadmiarowości.  
               -u Zaktualizuj istniejące pliki.  
               -z komentarz do archiwum

8

http://www.codebind.com/linux-tutorials/unzip-zip-file-using-terminal-linux-ubuntu-linux-mint-debian/ :

Zainstaluj rozpakowanie ============= Więc najpierw musimy zainstalować rozpakowanie w naszym systemie, jeśli nie jest zainstalowane. Polecenie unzip służy do wyodrębniania plików z archiwum ZIP.

Uruchom następujące polecenie, aby zainstalować unzip

sudo apt-get install unzip

unzip Syntex

$ unzip [-aCcfjLlnopqtuvy] [-d dir] zipfile

Teraz wykonaj poniższe czynności:

Rozpakuj plik

OPCJA 1 - Jeśli plik zip znajduje się w tym samym katalogu / folderze, w którym znajduje się twój terminal, a my chcemy go rozpakować w bieżącym katalogu roboczym.

Użyj następującego polecenia, aby osiągnąć wyżej opisany scenariusz

sudo unzip zip_file_name.zip

jeśli plik zip jest chroniony pewnym hasłem, użyj następującego polecenia:

sudo ubzip -P zip_file_name.zip

Upewnij się, że używasz opcji -P (duże P), a nie -p, ponieważ są to różne opcje.

OPCJA 2 - Jeśli plik zip nie znajduje się w tym samym katalogu i chcemy wyodrębnić / rozpakować plik w innym katalogu.

Użyj następującego polecenia, aby osiągnąć wyżej opisany scenariusz

sudo unzip path/filename.zip -d another_path_or_same_path

jeśli nie użyjemy opcji -d, plik zostanie rozpakowany do obecnego katalogu roboczego.

A jeśli plik zip jest chroniony hasłem, możemy również użyć -P.

użyj polecenia tar w Linux / Unix

tarjest akronimem dla Tape Archive. Polecenie tar służy do manipulowania archiwami w systemie Linux / Unix. Administratorzy systemu często używają komendy tar, aby zgrać kilka plików lub katalogów do wysoce skompresowanego archiwum, które jest wywoływane tarballlub tar, bziporaz gzipw systemie Linux / Unix .

tar Syntex

tar [OPTION...] [FILE]...

Lub

wymagana smoła Flagi

tar {-r|-t|-c|-x|-u}

tar opcjonalne flagi

tar {one of the required Flags} [ -d ][-B] [ -F ] [ -E ] [ -i ] [-h ] [ -l ] [ -m ] [ -o ] [ -p ] [ -w] [ -s ] [ -U ] [ -v ]
[-Number] [-b Blocks] [-f Archive]

Przykłady

Utwórz plik archiwum tar, kompresując katalog lub pojedynczy plik

Poniższe polecenie terminalu utworzy .tarplik o nazwie sample_dir.tarz katalogiem /home/codebind/sample_dirlub sample_dirw bieżącym katalogu roboczym.

ripon@ripon:~$  tar -cvf sample_dir.tar sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar

wprowadź opis zdjęcia tutaj

Oto, co faktycznie oznaczają te flagi (-cvf)

-c, --create- utwórz nowe archiwum

-x, --extract, --get- wypakuj pliki z archiwum

-f, --file ARCHIVE- użyj pliku archiwum lub ARCHIWUM urządzenia

Utwórz tar.gzlub tgzzarchiwizuj plik, kompresując katalog lub pojedynczy plik

Poniższe polecenie terminalu utworzy .tar.gzplik o nazwie sample_dir.tar.gzz katalogiem /home/codebind/sample_dirlub sample_dirw bieżącym katalogu roboczym.

Zauważ, że dodaliśmy dodatkową flagę -z do polecenia. Oto, co właściwie oznacza flaga -z

-z, --gzip, --gunzip --ungzip- Skompresuj archiwum za pomocą gzip

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tar.gz

wprowadź opis zdjęcia tutaj

Poniższe polecenie utworzy plik .tgz. Należy zauważyć, że oba pliki tar.gz i tgz są podobne.

ripon@ripon:~$ tar -cvzf sample_dir.tgz sample_dirsample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ ls
sample_dir sample_dir.tgz

Kompresowanie wielu katalogów lub plików jednocześnie

Powiedzmy, że na przykład chcemy skompresować sample_dirkatalog, java_testkatalog i abc.pyplik do pliku tar o nazwie sample_dir.tar.gz.

Uruchom następujące polecenie, aby osiągnąć powyższy cel.

ripon@ripon:~$ tar -cvzf sample_dir.tar.gz sample_dir java_test abc.py
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
java_test/
java_test/HelloCV.java
abc.py
ripon@ripon:~$ ls
sample_dir java_test abc.py sample_dir.tar.gz

wprowadź opis zdjęcia tutaj

Utwórz .bzip2plik archiwum, kompresując katalog lub pojedynczy plik

ripon@ripon:~$ tar -cjvf sample_dir.tar.bz2 sample_dir
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

Zauważ, że dodaliśmy dodatkową flagę -fdo polecenia. Oto, co -ffaktycznie oznacza flaga

-f, --file ARCHIVE- użyj pliku archiwum lub ARCHIWUM urządzenia

wprowadź opis zdjęcia tutaj

Wyodrębnij .tarplik archiwum

Możemy wyodrębnić lub rozpakować skompresowany plik za pomocą polecenia tar. Poniższe polecenie wyodrębni zawartość sample_dir.tardo bieżącego katalogu.

ripon@ripon:~$ tar -xvf sample_dir.tar
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

wprowadź opis zdjęcia tutaj

Następujące polecenie wyodrębni pliki lub rozpakuje pliki w określonym katalogu, tj. /home/codebind/dir_nameW tym przypadku.

ripon@ripon:~$ tar -xvf sample_dir.tar -C /home/codebind/dir_name
sample_dir/
sample_dir/main.cpp
sample_dir/sample.png
sample_dir/output
ripon@ripon:~$ 

dodaliśmy dodatkową flagę -Cdo polecenia. Oto, co -C faktycznie oznacza flaga

-C, --directory DIR - przejdź do katalogu DIR

wprowadź opis zdjęcia tutaj


1
Aby sprawdzić, czy zip / unzip są zainstalowane, użyj zip -vi unzip -v. Jeśli zostanie zainstalowany, zwróci coś podobnego UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(plus kilka wierszy dodatkowych informacji. Jeśli nie zostanie zainstalowany, powie coś takiego The program 'zip' is currently not installed. You can install it by typing: apt install zip.
SherylHohman,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.