Sıkıştırılmış bir arşivden belirli bir dizine sadece belirli bir dizini nasıl çıkarabilirim?


59

Biri sıkıştırılmış bir arşivden belirli bir dizine belirli bir dizini nasıl çıkartır?

Kullanmayı denedim

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

ancak bu, yalnızca klasördeki klasörü, açılmasını ve başka hiçbir şey yapmamasını istediğim klasörü oluşturur.

Yanıtlar:


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

EL 6'da çalışıyor


3
bu EL 6 nedir?
Zelda

2
Kurumsal Linux 6 (RHEL6) - Kırmızı Şapka.
slm

Bu da işe yarıyor; temelde Mark Adler'in cevaplarıyla aynı, ancak biraz farklı bir şekilde.
Enkouyami

@Enkouyami Alıntı eksi farklılıklar, tam olarak aynı şey gibi görünüyor.
Camilo Martin

1
@Enkouyami Çünkü çift tırnak içindeki ters eğik çizgi bir karakterden kaçar (sözde yıldız işareti kaçmaktadır, ancak sanırım bir yazım hatası), tek tırnak biçiminde ters eğik çizgi yorumlanmamıştır. Eğer biri gerçek bir ters eğik çizgi "\\"istiyorsa kullanılacaktır (başka hangi karakterlerin kaçtığını hatırlamak zorunda kalacaksınız). Bu nedenle, yazar "küre karakterinden alıntı yapmak" anlamına geliyorsa, bu bir alıntılama farkı (gereksiz). Her iki şekilde de böyle bir ters eğik çizgi yazım hatası.
Camilo Martin

39

Deneyin:

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

4
bunu yaptı? Ben olsun caution: filename not matched: foldername/\*ben çalıştırdığınızda unzip $repozip "$2-master/\*" -d /srv/www/magento/nerede $2ben dışarı tüm dosya ve klasörleri çıkarmak istiyorum zip klasör adıdır
jeremy.bass

10
\ 'Sadece çalıştı "path/*".
Alex,

8
"/ Arşiv / klasör /" yolunu korumayan "/ arşiv / klasör / *" içeriğini çıkarmanın bir yolu var mı? mvİhtiyacım olan dosyaları almak için daha sonra kullanıyorum .
jerrygarciuh

6
Bunun için kullanın -j.
Mark Adler

4
-jtüm yol bilgilerini çıkarır ve tüm dosyalar hedef klasöre gider. Yolun yalnızca ortak bölümünü kaldırmanın bir yolu var mı? Zip gibi -r.
Bob Stein,

6

Mevcut iki cevabın ikisi de doğrudur, ancak daha iyi açıklığa kavuşturulması gereken hedef dizini belirtmek biraz zordur.

Diyelim ki /target/root/orijinal açılma eyleminde hedef dir, örneğin:

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

Daha sonra, /target/root/yalnızca belirli bir alt dizini ayıklamak istememize rağmen, unzip'in çalıştığı şekilde hedef direk ile aynı şekilde kullanmamız gerekir :

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

Sonuçta, kural aslında basittir, seçenek için aynı hedef kök dizinini -dkullanın .

Btw, -qqseçenek unzip gerçekten sessiz olması, kaldırmak için çekinmeyin.


Bilginize: <kbd> unzip -qq 2.3.zip "magento2-2.3 / vendor / *" "vendor /" </kbd> 'yi yaptım ve <kbd>' e dikkat ettim: dosya adı eşleşmedi: vendor / `</kbd>. Bu bash ubuntu kurulumunda. Nadiren açıyorum, muhtemelen yanlış bir şeyler yaptım ...
Chris K
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.