Làm cách nào để giải nén tệp zip khỏi Terminal?


1413

Chỉ cần tải xuống một tập tin .zip từ internet. Tôi muốn sử dụng thiết bị đầu cuối để giải nén tập tin. cách chính xác để làm điều này là gì?


3
Giải nén tất cả các tệp từ thư mục hiện tại, bạn có thể sử dụng: unzip \ *. Zip
burtsevyg 18/2/2016

2
@burtsevyg dấu gạch chéo ngược là không cần thiết ở đó. Nó sẽ làm cho vỏ được coi \*là biểu tượng ngôi sao theo nghĩa đen. Chỉ cần sử dụng unzip *.zipđể làm cho shell mở rộng *ra tất cả các tệp kết thúc bằng.zip
Sergiy Kolodyazhnyy

Sử dụng *một mình không làm việc cho tôi. Nó gây ra filename not matchedlỗi. \*đã làm công việc.
arman_aegit

Tôi khuyên bạn nên sử dụng và tìm hiểu "unar" thay vì zip cụ thể, trừ khi bạn cần các tính năng cụ thể. "Các định dạng tệp được hỗ trợ bao gồm Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt và nhiều định dạng cũ và tối nghĩa khác.".
masterxilo

Ubuntu có nhiều công cụ nén / giải nén đã được cài đặt. Chạy apropos ziptừ bàn điều khiển cho danh sách đầy đủ.
Stephen W. Wright

Câu trả lời:


1927

Nếu unziplệnh chưa được cài đặt trên hệ thống của bạn, thì hãy chạy:

sudo apt-get install unzip

Sau khi cài đặt tiện ích giải nén, nếu bạn muốn giải nén vào một thư mục đích cụ thể, bạn có thể sử dụng:

unzip file.zip -d destination_folder

Nếu các thư mục nguồn và đích giống nhau, bạn chỉ cần làm:

unzip file.zip

83
Nếu bạn đã ở trong thư mục bạn muốn giải nén tệp, hãy bỏ qua các đối số thứ 2 và thứ 3, tức làunzip /path/to/file.zip
Severo Raz

2
Tôi vừa sử dụng lệnh này. Đây là một ví dụ. Bước 1 (Tôi đã thay đổi thư mục lưu trữ tệp zip): cd /home/paf/Copy/Programming/Javascript/Json Bước 2 (Tôi giải nén tệp zip trong thư mục tôi vừa đề cập):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
pablofiumara

2
unzipcó thể là một chương trình mặc định. Nói cách khác, bạn có thể không cần phải cài đặt nó.
noobninja

2
@Aevi Kiểm tra trang người đàn ông[-d exdir] An optional directory to which to extract files.
WAKR

4
Hãy chắc chắn rằng bạn trích xuất vào một thư mục, không giống như lưu trữ tar, bạn có thể thấy nhiều người bao gồm hàng tá tệp trong thư mục gốc của các tệp zip của họ, điều này có thể tạo ra một mớ hỗn độn thực sự !!!
Steve

230

Bạn chỉ có thể sử dụng unzip.

Cài đặt nó:

apt-get install unzip

Và sử dụng nó:

cd /path/to/file
unzip file.zip

117

Một công cụ hữu ích hơn là 7z, nén và giải nén một loạt các định dạng nén, đáng chú ý lzma, thường là giao thức cung cấp tốc độ nén cao nhất.

Lệnh này cài đặt 7z:

sudo apt-get install p7zip-full

Lệnh này liệt kê nội dung của zip:

7z l zipfile.zip

Lệnh này trích xuất nội dung của zip:

7z x zipfile.zip

5
7z ekhông giữ cấu trúc thư mục - 7z xkhông ...
assylias

2
13.10 nói 7z không tồn tại. Tôi nghĩ rằng nó phải sudo apt-get install 7zip
nitishch

6
Tôi nghĩ lệnh cài đặt nên sudo apt-get install p7ziphoặc sudo apt-get install p7zip-fullBạn cần phiên bản đầy đủ để nhận 7zlệnh. Đầy đủ cũng là người duy nhất xử lý zip và các loại định dạng khác trong số hai.
Automatico

1
bạn có thể làm rõ "Một công cụ hữu ích hơn"? Bạn đang so sánh với giải nén? Bạn có thể cung cấp bất kỳ ví dụ nào về các tính năng giúp 7z trở nên hữu ích hơn và có lẽ trong bối cảnh 7z nào được ưa thích hơn không?
David LeBauer

1
Đối với một số giải nén là hữu ích hơn: dễ sử dụng và Tên của nó để nhớ.
Shy Robbiani

47

Bạn có thể dùng:

unzip file.zip -d somedir

để giải nén yourpath/somedir

Nếu bạn muốn trích xuất thành một đường dẫn tuyệt đối, hãy sử dụng

sudo unzip file.zip -d /somedir

39

Sử dụng các công cụ kịch bản: Perl và Python

Nhiều câu trả lời ở đây đề cập đến các công cụ yêu cầu cài đặt, nhưng không ai đề cập rằng hai ngôn ngữ kịch bản của Ubuntu là Perl và Python đã đi kèm với tất cả các mô-đun cần thiết cho phép bạn giải nén tệp lưu trữ zip, có nghĩa là bạn không cần phải cài đặt bất cứ thứ gì khác Chỉ cần sử dụng một trong hai kịch bản được trình bày dưới đây để thực hiện công việc. Chúng khá ngắn và thậm chí có thể được cô đọng thành lệnh một lớp nếu chúng ta muốn.

Con trăn

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

Sử dụng:

./pyunzip.py master.zip 

hoặc là

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;
}

Sử dụng:

./perlunzip master.zip

hoặc là

perl perlunzip.pl master.zip

Xem thêm


1
Cảm ơn, chính xác những gì tôi cần. Tôi không có root và không muốn cài đặt giải nén thủ công từ nguồn. Điều này cũng có thể được sử dụng với bash one-liner mà hầu hết sẽ hoạt động (giả sử không có '''bên trong tên tệp):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
mxmlnkn

@mxmlnkn Vui mừng tôi có thể giúp :)
Sergiy Kolodyazhnyy

30

Nếu các thư mục nguồn và đích giống nhau, bạn chỉ cần làm:

unzip filename.zip

Trên Ubuntu 17.04, -d yêu cầu không rõ lý do.
林果

21

Tôi thích bsdtarđến unzip/ zip. Để giải nén, chúng khá giống nhau:

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

Tuy nhiên để nén, bsdtarchiến thắng. Giả sử bạn có đầu vào này:

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

và muốn điều này trong tệp zip:

alfa/four.txt
bravo/four.txt

Điều này thật dễ dàng với bsdtar:

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

zip không có -dtùy chọn như giải nén, vì vậy bạn không có cách nào để đạt được điều trên trừ khi bạn cdtrước.


Nhiều như tôi muốn trao chiến thắng cho một công cụ foss, rõ ràng là bsdtarkhông phù hợp với các ký tự đặc biệt như ít nhất một từ trong Blóðstokkinnkhi giải nén. Tôi thậm chí không kiểm tra khi nén. Thật là một người lập dị. : / unzipxử lý nó mà không có vấn đề.
Vrakfall

20

Dưới đây là mô tả chi tiết về các tùy chọn mà tôi thấy hữu ích:

Lệnh: giải nén - [tùy chọn] đường dẫn zip.
               -d một thư mục tùy chọn để giải nén tập tin  
               -l Liệt kê các tập tin lưu trữ.Mật khẩu 
               -P Sử dụng mật khẩu để giải mã các mục zipfile được mã hóa (nếu có).
               -t Kiểm tra tệp lưu trữ với kiểm tra dự phòng theo chu kỳ.  
               -u Cập nhật các tập tin hiện có.  
               -z lưu trữ bình luận

8

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

Cài đặt unzip ============= Vì vậy, trước hết chúng ta cần cài đặt giải nén trên hệ thống của mình nếu nó chưa được cài đặt. lệnh unzip được sử dụng để trích xuất các tập tin từ kho lưu trữ ZIP.

Chạy lệnh sau để cài đặt unzip

sudo apt-get install unzip

unzip Cú pháp

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

Bây giờ Thực hiện theo các bước dưới đây:

Tập tin UnZip

TÙY CHỌN 1 - Nếu Tệp Zip nằm trong cùng thư mục / thư mục chứa thiết bị đầu cuối của bạn và chúng tôi muốn giải nén nó trong thư mục làm việc hiện tại.

Sử dụng lệnh sau để đạt được kịch bản được mô tả ở trên

sudo unzip zip_file_name.zip

nếu tệp zip được bảo vệ bằng một số mật khẩu, thì hãy sử dụng lệnh sau:

sudo ubzip -P zip_file_name.zip

Vui lòng đảm bảo bạn sử dụng -P (viết hoa P) không -p vì các tùy chọn khác nhau.

TÙY CHỌN 2 - Nếu tệp zip không có trong cùng thư mục và chúng tôi muốn giải nén / giải nén tệp trong thư mục khác.

Sử dụng lệnh sau để đạt được kịch bản được mô tả ở trên

sudo unzip path/filename.zip -d another_path_or_same_path

nếu chúng ta không sử dụng tùy chọn -d, tệp sẽ được trích xuất để hiển thị thư mục làm việc.

Và nếu tệp zip được bảo vệ bằng mật khẩu, chúng tôi cũng có thể sử dụng -P.

sử dụng lệnh tar trong Linux / Unix

tarlà từ viết tắt của Lưu trữ băng. Lệnh tar được sử dụng để Thao tác lưu trữ trong Linux / Unix. Quản trị hệ thống sử dụng lệnh tar thường xuyên để rip một bó của tập tin hoặc thư mục vào lưu trữ cao nén được gọi là tarballhay tar, bzipgziptrong Linux / Unix hệ thống.

tar Syntex

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

Hoặc là

tar yêu cầu cờ

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

tar cờ tùy chọn

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]

Ví dụ

Tạo tập tin lưu trữ tar bằng cách nén một thư mục hoặc một tập tin

Lệnh terminal bên dưới sẽ tạo một .tartệp được gọi sample_dir.tarvới một thư mục /home/codebind/sample_dirhoặc sample_dirtrong thư mục làm việc hiện tại.

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

nhập mô tả hình ảnh ở đây

Đây là những gì những lá cờ (-cvf) thực sự có nghĩa là

-c, --create- tạo một kho lưu trữ mới

-x, --extract, --get- giải nén tập tin từ kho lưu trữ

-f, --file ARCHIVE- sử dụng tệp lưu trữ hoặc thiết bị ARCHIVE

Tạo tar.gzhoặc tgzlưu trữ tệp bằng cách nén một thư mục hoặc một tệp

Lệnh terminal bên dưới sẽ tạo một .tar.gztệp được gọi sample_dir.tar.gzvới một thư mục /home/codebind/sample_dirhoặc sample_dirtrong thư mục làm việc hiện tại.

Lưu ý rằng chúng tôi đã thêm cờ -z vào lệnh. Đây là ý nghĩa của cờ -z

-z, --gzip, --gunzip --ungzip- Nén kho lưu trữ bằng 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

nhập mô tả hình ảnh ở đây

Lệnh dưới đây sẽ tạo một tệp .tgz. Một điều cần chú ý là tar.gz và tgz đều giống nhau.

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

Nén nhiều thư mục hoặc tập tin cùng một lúc

Giả sử, ví dụ chúng tôi muốn nén sample_dirthư mục, java_testthư mục và abc.pytệp vào tệp tar được gọi sample_dir.tar.gz.

Chạy lệnh sau để đạt được mục tiêu trên.

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

nhập mô tả hình ảnh ở đây

Tạo .bzip2tệp lưu trữ bằng cách nén một thư mục hoặc một tệp duy nhất

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:~$ 

Lưu ý rằng chúng tôi đã thêm cờ bổ sung -fvào lệnh. Đây -flà ý nghĩa thực sự của cờ

-f, --file ARCHIVE- sử dụng tệp lưu trữ hoặc thiết bị ARCHIVE

nhập mô tả hình ảnh ở đây

Giải nén .tartập tin lưu trữ

Chúng ta có thể giải nén hoặc gỡ bỏ tệp nén bằng lệnh tar. Lệnh dưới đây sẽ trích xuất nội dung của sample_dir.tarthư mục hiện tại.

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

nhập mô tả hình ảnh ở đây

Lệnh sau sẽ trích xuất hoặc giải nén các tệp trong Thư mục được chỉ định, nghĩa là /home/codebind/dir_nametrong trường hợp này.

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:~$ 

chúng tôi đã thêm cờ bổ sung -Cvào lệnh. Đây -C là ý nghĩa của cờ

-C, --directory DIR - thay đổi thư mục TRỰC TIẾP

nhập mô tả hình ảnh ở đây


1
Ngoài ra, để kiểm tra xem zip / unzip đã được cài đặt chưa, hãy sử dụng zip -vunzip -v. Nếu được cài đặt, nó sẽ trả về một cái gì đó như UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(cộng với một vài dòng thông tin bổ sung. Nếu không được cài đặt, nó sẽ nói một cái gì đó giống như The program 'zip' is currently not installed. You can install it by typing: apt install zip.
SherylHohman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.