Bagaimana cara mengekstrak hanya folder tertentu dari arsip zip ke direktori yang diberikan?


59

Bagaimana cara mengekstrak folder tertentu dari arsip zip ke direktori yang diberikan?

Saya mencoba menggunakan

unzip "/path/to/archive.zip" "in/archive/folder/" -d "/path/to/unzip/to"

tetapi itu hanya membuat folder di jalur yang saya inginkan untuk unzip dan tidak melakukan hal lain.

Jawaban:


60
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path> 

berfungsi dengan baik pada EL 6


3
apa EL 6 ini?
Zelda

2
Enterprise Linux 6 (RHEL6) - Red Hat.
slm

Ini juga berfungsi; pada dasarnya jawaban yang sama dengan Mark Adler, tetapi dengan cara yang sedikit berbeda.
Enkouyami

@Enkouyami Minus perbedaan dalam mengutip, sepertinya hal yang persis sama.
Camilo Martin

1
@Enkouyami Karena backslash dalam tanda kutip ganda lolos dari karakter (seharusnya tanda bintang sedang melarikan diri, tapi saya kira itu kesalahan ketik), sedangkan dalam tanda kutip tunggal backslash tidak diartikan. Jika seseorang menginginkan backslash literal, "\\"akan digunakan (kalau tidak Anda harus selalu ingat karakter mana yang lolos khusus). Jadi perbedaan mengutip jika penulis berarti "mengutip karakter glob" (tidak perlu). Either way satu backslash seperti itu adalah kesalahan ketik.
Camilo Martin

39

Mencoba:

unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to

4
melakukan ini? Saya dapatkan caution: filename not matched: foldername/\*ketika saya menjalankan di unzip $repozip "$2-master/\*" -d /srv/www/magento/mana $2nama folder di zip saya ingin menarik semua file dan folder dari
jeremy.bass

10
Bekerja tanpa \, adil "path/*".
Alex

8
Apakah ada cara untuk mengekstrak konten "di / arsip / folder / *" yang tidak mempertahankan path "di / arsip / folder /"? Saya akhirnya menggunakan mvsetelah itu untuk mendapatkan file di mana saya membutuhkannya.
jerrygarciuh

6
Gunakan -juntuk itu.
Mark Adler

4
-jmenghapus semua info jalur, dan semua file masuk ke folder target. Apakah ada cara untuk menghapus hanya bagian umum dari jalur? Ingin melakukan zip -r.
Bob Stein

6

Dua jawaban yang ada sama-sama benar, tetapi agak sulit untuk menentukan direktori target, yang harus diklarifikasi dengan lebih baik.

Katakanlah /target/root/target diarahkan pada tindakan unzip yang asli, misalnya:

unzip -qq src.zip -d "/target/root/"

Kemudian, kita perlu menggunakan yang sama /target/root/dengan target dir sesudahnya walaupun kita ingin mengekstrak hanya sub-direktori tertentu, seperti cara unzip bekerja:

unzip -qq src.zip "sub/dir/*" "/target/root/"

Lagi pula, aturannya sebenarnya sederhana, gunakan direktori root target yang sama untuk -dopsi .

BTW, -qqopsinya adalah agar unzip benar-benar senyap, jangan ragu untuk menghapusnya.


FYI: Saya melakukan <kbd> unzip -qq 2.3.zip "magento2-2.3 / vendor / *" "vendor /" </kbd> dan mendapat <kbd> hati-hati: nama file tidak cocok: vendor / `</kbd>. Ini pada instalasi ubuntu di bash. Saya jarang membuka ritsleting, mungkin melakukan sesuatu yang salah ...
Chris K
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.