unzip hedef dizini nasıl belirtilir


21

Linux zip komutunda içine unzips hedef dizini zor kod olabilir bir seçenek var mı. Örneğin, ./mydir dosyalarını myzipfile.zip dosyasına sıkıştırmak istiyorum, ancak unzip komutunun belirli bir dizin "projx" oluşturmasını ve ./mydir altındaki dosyaları genişletmesini istiyorum.

zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )

Yanıtlar:


18

Böyle bir seçenek yoktur, en azından Info-ZIP için değil. Kendiniz bir dizin projx oluşturmanız , dosyalarınızı bu klasöre taşımanız / kopyalamanız ve ardından ona aktarmanız gerekir zip.

Dizin zaten varsa o zaman sadece seçeneğini geçmesi -diçin unzipekstraksiyon için hedef dizini belirtmek için.


4

Bunu yapmak için başka bir yol var. Aşağıdaki yöntemi kullanarak zip dosyasının tüm içeriğini düzleştirebilirsiniz. Hedef dizin " projx " dir ve aşağıdaki komutu yürütün.

cd /projx && unzip -j /path/to/myzipfile.zip

-J seçeneğine "önemsiz yollar" adı verilir ve herhangi bir dizin yapısını ayıklamak yerine her dosyayı geçerli dizine döker.


0

Belirli bir komut satırı seçeneği hakkında bilmiyorum, ancak hedefe ulaşmak için aşağıdaki komutları kullanabilirsiniz:

ln -s mydir projx
zip -r myzipfile.zip projx
rm projx

İlk komut, simgesel bir bağlantı oluşturur, böylece dosyalara mydirda üzerinden erişebilirsiniz projx. Daha sonra Info-ZIP(sürüm 2.31 ile test edildi) kullanıldığında, sembolik bağlantı kaydı kaldırılır (siz belirtmedikçe bu varsayılan değerdir -y) ve dosyalar özyinelemeli olarak saklanır:

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

Gördüğünüz gibi, klasör adı da dosyada saklanır - çıkarıldığında dizin projxoluşturulur.

Ancak, mutlak yolları saklama olasılığını düşünemiyorum, ama bu yine de kötü bir fikir.


Mutlak yol yalnızca MacOS'ta seçeneği belirterek çalışır -jj. Diğer işletim sistemlerinde -j, herhangi bir ön yolu kaldıran ve böylece tam tersi olan (çok akıllı bir tasarım ...) seçenek yalnızca desteklenir (ve -jjolarak yorumlanır -j).
scai
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.