วิธีการแตกไฟล์ zip จาก Terminal


1413

เพียงดาวน์โหลดไฟล์. zip จากอินเทอร์เน็ต ฉันต้องการใช้เทอร์มินัลเพื่อคลายซิปไฟล์ วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?


3
แยกไฟล์ทั้งหมดออกจากโฟลเดอร์ปัจจุบันคุณสามารถใช้: unzip \ *. zip
burtsevyg

2
@burtsevyg แบ็กสแลชไม่จำเป็นต้องมี มันจะทำให้เปลือกหอย\*ถือเป็นสัญลักษณ์รูปดาวที่แท้จริง เพียงใช้unzip *.zipเพื่อทำให้เชลล์ขยาย*ไปยังไฟล์ทั้งหมดที่ลงท้ายด้วย.zip
Sergiy Kolodyazhnyy

ใช้*คนเดียวไม่ได้ผลสำหรับฉัน มันทำให้เกิดfilename not matchedข้อผิดพลาด \*ทำงาน
arman_aegit

ฉันแนะนำให้คุณใช้ & เรียนรู้ "unar" แทนที่จะใช้ zip เฉพาะเจาะจงเว้นแต่ว่าคุณต้องการคุณสมบัติเฉพาะ "รูปแบบไฟล์ที่รองรับ ได้แก่ Zip, Tar-GZip, Tar-BZip2, RAR, 7-zip, LhA, StuffIt และรูปแบบเก่าและคลุมเครืออื่น ๆ อีกมากมาย"
masterxilo

Ubuntu มีเครื่องมือบีบอัด / คลายการบีบอัดหลายตัวที่ติดตั้งไว้แล้ว เรียกใช้apropos zipจากคอนโซลสำหรับรายการทั้งหมด
Stephen W. Wright

คำตอบ:


1926

หากunzipคำสั่งยังไม่ได้ติดตั้งบนระบบของคุณให้รัน:

sudo apt-get install unzip

หลังจากติดตั้งยูทิลิตี unzip แล้วหากคุณต้องการแตกไฟล์ไปยังโฟลเดอร์ปลายทางคุณสามารถใช้:

unzip file.zip -d destination_folder

หากไดเรกทอรีต้นทางและปลายทางเหมือนกันคุณสามารถทำได้:

unzip file.zip

83
หากคุณอยู่ในไดเรกทอรีที่คุณต้องการให้คลายซิปไฟล์อยู่ให้ข้ามอาร์กิวเมนต์ที่ 2 และ 3 เช่นunzip /path/to/file.zip
Severo Raz

2
ฉันเพิ่งใช้คำสั่งนี้ นี่คือตัวอย่าง ขั้นตอนที่ 1 (ฉันเปลี่ยนเป็นไดเรกทอรีที่จัดเก็บไฟล์ zip): cd /home/paf/Copy/Programming/Javascript/Json ขั้นตอนที่ 2 (ฉันแยกไฟล์ zip ในไดเรกทอรีที่ฉันเพิ่งพูดถึง):unzip file.zip -d /home/paf/Copy/Programming/Javascript/Json
pablofiumara

2
unzipอาจเป็นโปรแกรมเริ่มต้น คุณอาจไม่จำเป็นต้องติดตั้ง
noobninja

2
@Aevi ตรวจสอบหน้าคน[-d exdir] An optional directory to which to extract files.
WAKR

4
ตรวจสอบให้แน่ใจว่าคุณแตกไปยังไดเรกทอรีซึ่งแตกต่างจากไฟล์เก็บถาวร tar คุณอาจพบว่ามีหลายคนที่มีหลายสิบไฟล์ในไดเรกทอรีรากของไฟล์ zip ของพวกเขาสิ่งนี้อาจทำให้ยุ่งเหยิงจริง !!!
Steve


117

เครื่องมือที่มีประโยชน์มากขึ้นคือ7zรูปแบบการบีบอัดที่ซิปและคลายซิปซึ่งlzmaมักเป็นโปรโตคอลที่ให้อัตราการบีบอัดสูงสุด

คำสั่งนี้ติดตั้ง7z:

sudo apt-get install p7zip-full

คำสั่งนี้แสดงรายการเนื้อหาของ zip:

7z l zipfile.zip

คำสั่งนี้แยกเนื้อหาของรหัสไปรษณีย์:

7z x zipfile.zip

5
7z eไม่เก็บโครงสร้างไดเรกทอรี - 7z xทำ ...
assylias

2
13.10 พูดว่า 7z ไม่มีอยู่จริง ฉันคิดว่ามันต้อง sudo apt-get install 7zip
nitishch

6
ฉันคิดว่าคำสั่งติดตั้งควรจะเป็นsudo apt-get install p7zipหรือsudo apt-get install p7zip-fullคุณต้องการเวอร์ชันเต็มเพื่อ7zรับคำสั่ง เต็มยังเป็นเพียงคนเดียวที่จัดการกับซิปและรูปแบบอื่น ๆ จากทั้งสอง
Automatico

1
คุณช่วยอธิบาย "เครื่องมือที่มีประโยชน์มากขึ้น" ได้ไหม? คุณเปรียบเทียบกับ unzip หรือไม่ คุณสามารถให้ตัวอย่างของคุณลักษณะที่ทำให้ 7z มีประโยชน์มากขึ้นและอาจใช้ในบริบทที่ต้องการ 7z หรือไม่
David LeBauer

1
สำหรับ unzip บางอันมีประโยชน์มากกว่า: ใช้งานง่ายและจดจำชื่อได้
Shy Robbiani

47

คุณสามารถใช้ได้:

unzip file.zip -d somedir

เพื่อสกัดไป yourpath/somedir

หากคุณต้องการแยกเส้นทางที่แน่นอนให้ใช้

sudo unzip file.zip -d /somedir

39

การใช้เครื่องมือสร้างสคริปต์: Perl และ Python

คำตอบมากมายที่นี่พูดถึงเครื่องมือที่ต้องมีการติดตั้ง แต่ไม่มีใครพูดถึงภาษาสคริปต์ของ Ubuntu สองภาษาคือ Perl และ Python มาพร้อมกับโมดูลที่จำเป็นทั้งหมดที่อนุญาตให้คุณคลายซิปไฟล์ zip ซึ่งหมายความว่าคุณไม่จำเป็นต้องติดตั้งอะไรเลย อื่น. เพียงใช้หนึ่งในสองสคริปต์ที่แสดงด้านล่างเพื่อทำงาน พวกมันค่อนข้างสั้นและยังสามารถย่อให้เป็นคำสั่งหนึ่งซับถ้าเราต้องการ

หลาม

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

การใช้งาน:

./pyunzip.py master.zip 

หรือ

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

การใช้งาน:

./perlunzip master.zip

หรือ

perl perlunzip.pl master.zip

ดูสิ่งนี้ด้วย


1
ขอบคุณสิ่งที่ฉันต้องการ ฉันไม่มีรูตและไม่ต้องการติดตั้งคลายซิปด้วยตนเองจากแหล่งที่มา นอกจากนี้ยังสามารถใช้กับ bash one-liner ซึ่งส่วนใหญ่จะทำงานได้ (สมมติว่าไม่มี'''ชื่อไฟล์อยู่ภายใน):unzip(){ python -c "from zipfile import PyZipFile; PyZipFile( '''$1''' ).extractall()"; }
mxmlnkn

@mxmlnkn ดีใจที่ฉันช่วยได้ :)
Sergiy Kolodyazhnyy

30

หากไดเรกทอรีต้นทางและปลายทางเหมือนกันคุณสามารถทำได้:

unzip filename.zip

บน Ubuntu 17.04, -d ต้องการด้วยเหตุผลที่ไม่ทราบสาเหตุ
林果皞

21

ฉันชอบbsdtarที่จะ/unzip zipสำหรับการแยกมันคล้ายกันมาก:

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

อย่างไรก็ตามสำหรับการซิปให้bsdtarชนะ สมมติว่าคุณมีข้อมูลนี้:

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

และต้องการสิ่งนี้ในไฟล์ zip:

alfa/four.txt
bravo/four.txt

นี่เป็นเรื่องง่ายด้วยbsdtar:

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

zip ไม่มี-dตัวเลือกเช่น unzip ดังนั้นคุณจึงไม่มีทางที่จะบรรลุเป้าหมายดังกล่าวข้างต้นเว้นแต่คุณจะcdเป็นคนแรก


เท่าที่ฉันต้องการจะให้รางวัลแก่เครื่องมือฟอสส์เห็นได้ชัดbsdtarว่าไม่ได้เป็นลางดีกับตัวละครพิเศษอย่างน้อยหนึ่งคำในBlóðstokkinnขณะที่ไม่บีบอัด ฉันไม่ได้ตรวจสอบแม้แต่ตอนบีบอัด ช่างเป็นคนเกียจคร้าน : / unzipจัดการโดยไม่มีปัญหา
Vrakfall

20

นี่คือคำอธิบายโดยละเอียดของตัวเลือกที่ฉันพบว่ามีประโยชน์:

คำสั่ง: เปิดเครื่องรูด - [ตัวเลือก] เส้นทางซิป
               -d ไดเรกทอรีทางเลือกที่จะแยกไฟล์  
               -l รายการไฟล์เก็บถาวรรหัสผ่าน 
               -P ใช้รหัสผ่านเพื่อถอดรหัสรายการ zipfile ที่เข้ารหัส (ถ้ามี)
               -t ทดสอบไฟล์เก็บถาวรด้วยการตรวจสอบความซ้ำซ้อนแบบวนซ้ำ  
               -u อัพเดตไฟล์ที่มีอยู่  
               -z ความคิดเห็นเก็บถาวร

8

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

ติดตั้ง unzip ============= ดังนั้นก่อนอื่นเราต้องติดตั้ง unzip ในระบบของเราหากยังไม่ได้ติดตั้ง คำสั่ง unzip ใช้เพื่อแยกไฟล์จากไฟล์เก็บถาวร ZIP

รันคำสั่งต่อไปนี้เพื่อติดตั้ง unzip

sudo apt-get install unzip

unzip Syntex

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

ตอนนี้ทำตามขั้นตอนด้านล่าง:

เปิดเครื่องรูดไฟล์

ตัวเลือก 1 - หากไฟล์ซิปอยู่ในไดเรกทอรี / โฟลเดอร์เดียวกันกับที่เทอร์มินัลของคุณอยู่และเราต้องการที่จะแตกไฟล์ในไดเรกทอรีทำงานปัจจุบัน

ใช้คำสั่งต่อไปนี้เพื่อให้บรรลุสถานการณ์ที่อธิบายไว้ข้างต้น

sudo unzip zip_file_name.zip

หากไฟล์ zip ได้รับการป้องกันด้วยรหัสผ่านบางส่วนให้ใช้คำสั่งต่อไปนี้:

sudo ubzip -P zip_file_name.zip

โปรดตรวจสอบให้แน่ใจว่าคุณใช้ -P (ตัวพิมพ์ใหญ่ P) ไม่ใช่ -p เนื่องจากตัวเลือกต่าง ๆ

ตัวเลือก 2 - หากไฟล์ zip ไม่มีอยู่ในไดเรกทอรีเดียวกันและเราต้องการแยก / แตกไฟล์ในไดเรกทอรีอื่น

ใช้คำสั่งต่อไปนี้เพื่อให้บรรลุสถานการณ์ที่อธิบายไว้ข้างต้น

sudo unzip path/filename.zip -d another_path_or_same_path

หากเราไม่ได้ใช้ตัวเลือก -d ไฟล์จะถูกแยกเพื่อนำเสนอไดเรกทอรีการทำงาน

และถ้า zip -Pไฟล์ที่มีการป้องกันด้วยรหัสผ่านที่เรายังสามารถใช้

ใช้คำสั่ง tar ใน Linux / Unix

tarเป็นตัวย่อสำหรับ Tape Archive คำสั่ง tar ถูกใช้เพื่อจัดการกับไฟล์เก็บถาวรใน Linux / Unix ผู้ดูแลระบบใช้คำสั่ง tar บ่อยในการตัดพวงของไฟล์หรือไดเรกทอรีไปยังที่เก็บบีบอัดสูงซึ่งถูกเรียกว่าtarballหรือtar, bzipและ gzipในLinux / Unixระบบ

tar Syntex

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

หรือ

จำเป็นต้องใช้ tar

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

tar ตัวเลือก Flags

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]

ตัวอย่าง

สร้าง tar ไฟล์เก็บถาวรโดยการบีบอัดไดเรกทอรีหรือไฟล์เดียว

คำสั่งเทอร์มินัลด้านล่างจะสร้าง.tarไฟล์ที่เรียก sample_dir.tarพร้อมกับไดเรกทอรี/home/codebind/sample_dirหรือ sample_dirในไดเรกทอรีทำงานปัจจุบัน

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

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือความหมายของธงเหล่านั้น (-cvf)

-c, --create- สร้างที่เก็บถาวรใหม่

-x, --extract, --get- แยกไฟล์จากไฟล์เก็บถาวร

-f, --file ARCHIVE- ใช้ไฟล์เก็บถาวรหรืออุปกรณ์ ARCHIVE

สร้างtar.gzหรือtgzเก็บถาวรไฟล์โดยการบีบอัดไดเรกทอรีหรือไฟล์เดียว

คำสั่งเทอร์มินัลด้านล่างจะสร้าง.tar.gzไฟล์ที่เรียก sample_dir.tar.gzพร้อมกับไดเรกทอรี/home/codebind/sample_dirหรือ sample_dirในไดเรกทอรีทำงานปัจจุบัน

โปรดสังเกตว่าเราได้เพิ่มแฟล็กพิเศษ -z ในคำสั่งนี่คือความหมายของแฟล็ก -z จริงหรือไม่

-z, --gzip, --gunzip --ungzip- บีบอัดไฟล์เก็บถาวรด้วย 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

ป้อนคำอธิบายรูปภาพที่นี่

ซอลเบลโลว์คำสั่งจะสร้างไฟล์. tgz สิ่งนี้ที่สังเกตเห็นได้คือ tar.gz และ tgz ทั้งคู่มีความคล้ายคลึงกัน

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

บีบอัดหลายไดเรกทอรีหรือไฟล์ในครั้งเดียว

สมมติว่าตัวอย่างเช่นเราต้องการที่จะบีบอัดsample_dirไดเรกทอรีที่java_testไดเรกทอรีและabc.pyไฟล์ไปยังไฟล์ tar sample_dir.tar.gzที่เรียกว่า

เรียกใช้คำสั่งต่อไปนี้เพื่อให้บรรลุเป้าหมายข้างต้น

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

ป้อนคำอธิบายรูปภาพที่นี่

สร้าง.bzip2ไฟล์เก็บถาวรโดยการบีบอัดไดเรกทอรีหรือไฟล์เดียว

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

โปรดสังเกตว่าเราได้เพิ่มการตั้งค่าสถานะพิเศษ-fลงในคำสั่งนี่คือความ-fหมายของการตั้งค่าสถานะที่แท้จริง

-f, --file ARCHIVE- ใช้ไฟล์เก็บถาวรหรืออุปกรณ์ ARCHIVE

ป้อนคำอธิบายรูปภาพที่นี่

แยก.tarไฟล์เก็บถาวร

เราสามารถแตกไฟล์ออกหรือคลายไฟล์บีบอัดโดยใช้คำสั่ง tar คำสั่งด้านล่างจะแยกเนื้อหาของsample_dir.tarไปยังไดเรกทอรีปัจจุบัน

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

ป้อนคำอธิบายรูปภาพที่นี่

คำสั่งต่อไปนี้จะแตกไฟล์หรือแยกไฟล์ออกใน Directory ที่ระบุเช่น/home/codebind/dir_nameในกรณีนี้

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

เราได้เพิ่มการตั้งค่าสถานะพิเศษ-Cลงในคำสั่งนี่คือความ-C หมายของการตั้งค่าสถานะที่แท้จริง

-C, --directory DIR - เปลี่ยนเป็นไดเรกทอรี DIR

ป้อนคำอธิบายรูปภาพที่นี่


1
นอกจากนี้เพื่อตรวจสอบว่าซิป / เครื่องรูดมีการติดตั้งการใช้งานและzip -v unzip -vหากติดตั้งแล้วมันจะส่งคืนสิ่งที่ต้องการUnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.(รวมถึงข้อมูลเพิ่มเติมหลายบรรทัดหากไม่ได้ติดตั้งไว้มันจะพูดว่าคล้ายThe program 'zip' is currently not installed. You can install it by typing: apt install zipกัน)
SherylHohman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.