Tek tek dosyaları birden fazla zip dosyasından çıkarın ve bu tek tek dosyaları ana dizine çıkartın


1

Bireysel dosyaları açmak istiyorum. Bu dosyalar bir .txt uzantısına sahiptir. Bu dosyalar ayrıca birden fazla sıkıştırılmış dosyada da bulunur. İşte kullanmaya çalıştığım komut.

unzip -jn /path/to/zipped/files/zipArchiveFile2011\*.zip /path/to/specific/individual/files/myfiles2011*.txt -d /path/to/home/directory/for/extract/

Anladığım kadarıyla, -j seçeneği dizinleri dışlar ve sadece txt dosyalarını çıkarır. -N seçeneği, daha önceden çıkarılmışsa bir dosyanın üzerine yazmaz. Ben de öne eğik çizgi olduğunu öğrendim. /path/to/zipped/files/zipArchiveFile2011\*.zip joker karakterden (*) kaçmak için gereklidir.

İşte karşısına çıkan hata mesajlarının bir örneği:

Archive: /path/to/zipped/files/zipArchiveFile20110808.zip caution: filename not matched: /path/to/specific/individual/files/myfiles20110807.txt caution: filename not matched: /path/to/specific/individual/files/myfiles20110808.txt Archive: /path/to/zipped/files/zipArchiveFile20110809.zip caution: filename not matched: /path/to/specific/individual/files/myfiles20110810.txt caution: filename not matched: /path/to/specific/individual/files/myfiles20110809.txt

Çok basit bir şeyi özlediğimi hissediyorum. Dizin yolları etrafında tek tırnak (') ve çift tırnak (") kullanmayı denedim.


1
1 dosya çalışmasından ayıklamak için sorununuzu basitleştirin, yani ilk önce yıldızı kaldırın, / / ​​/ / UniqFileName öğesinin tam yoluyla değiştirin ve daha sonra belirttiğiniz gibi * kalan tüm karakterleri alıntılayın ( \* ). İkinci desenle eşleşen 1 veya daha fazla dosyayı ... / birey / dosyalar / ... arşivden çıkarmak mı istiyorsunuz? Bunun nasıl çalıştığını anladığınızda, sıkıştırılmış bir öğenin bir kerede işleyeceği dosyaların bir listesini oluşturmak için kabuk joker karakterlerinin nasıl kullanılacağını anlayabilirsiniz.
shellter

Yanıtlar:


2

Dosya adında range ifadesi olan unzip komutu için, hedef dosya adındaki hem aralık biçiminden hem de joker karakterden kaçmamız gerekir. order0710.zip, ... order0715.zip dizinindeki txt uzantılı dosyaları txt_pool klasörüne çıkartmak için şöyle komut vermeliyiz:

unzip -jn order071\[0-5].zip \*.txt -d txt_pool

1

Bence sen de alıntı yapmalısın. * dosya listesinde. Komut bunun gibi bir şeye benzemeli:

unzip -jn /path/to/zipped/files/zipArchiveFile2011\*.zip
      /path/to/specific/individual/files/myfiles2011\*.txt 
      -d /path/to/home/directory/for/extract/

İkinci alıntı yapmazsa * bash onu genişletir ve dosya isimlerini yerleştirir. Komuta iletilen değeri kullanarak kontrol edebilirsiniz. echo:

echo /path/to/specific/individual/files/myfiles2011*.txt

0

WinRar'ı denedin mi?

Basitçe unrar.bat adlı bir toplu iş dosyası oluşturun

c: md \ unrar cd \ unrar "C: \ Program Dosyaları (x86) \ WinRAR \ unrar.exe" e% 1 c: \ unrar'ın başlatılması

Şimdi herhangi bir .zip dosyasına sağ tıklayın ve Birlikte aç ... seçeneğini seçin.

Umarım fikri görürsün.

P.S: Görev çubuğunda / hızlı başlatmada bir kısayol oluşturabilir ve ardından dosyaları .bat dosyası simgesine sürükleyebilirsiniz - sağ tıklamak yerine ...

Dizinleri bölmezseniz, sonunda * .txt maskesiyle bir arama yapın. Tüm txt dosyaları listelenir, artık kolaylıkla seçebilir / kesebilir / yapıştırabilirsiniz.


1
Sadece bir kafa var, Windows değil RedHat / Unix kullanıyor. :)
Kruug
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.