Gizli dosyalar olmadan terminal yoluyla tüm dizinin bir zip arşivini nasıl oluşturabilirim?

188

İçinde çok sayıda gizli klasör / dosya bulunan bir projem var. Bunun bir zip-arşivi oluşturmak istiyorum, ancak arşivde herhangi bir gizli klasör / dosya olmamalıdır. Gizli bir klasördeki dosyalar gizli değilse, bunlar da dahil edilmemelidir.

Bunun gibi bir dizinin bir zip arşivini oluşturabileceğimi biliyorum:

zip -r zipfile.zip directory

Ayrıca dosyaları -x seçeneğiyle hariç tutabileceğimi de biliyorum, bunun işe yarayacağını düşündüm:

zip -r zipfile.zip directory -x .*

Çalışmıyordu. Tüm gizli dizinler hâlâ zip dosyasındaydı.

    
sordu Martin Thoma 27.08.2011 20:01

8 cevap

98

Bu ayrıca gizli olmayan dizinlerde gizli dosyaları da hariç tutar:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip [email protected]
    
verilen cevap arrange 27.08.2011 21:27
66

Öncelikle zip yüklemediyseniz, önce aşağıdaki gibi yükleyin:

sudo apt-get install zip

Sonra basitçe bir zip dosyası oluşturmak için:

zip -r compressed_filename.zip foldername

Gizli dosyaları hariç tutmak istiyorsanız:

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip [email protected]
    
verilen cevap M A K Ripon 11.08.2015 08:28
52

" 'yı .* dosyasına ekleyin (aksi takdirde, kabuğunuz .* öğesini geçerli dizindeki nokta dosyalarına genişletir) ve ayrıca gizli dosyaları alt dizinlerde hariç tutar:

zip -r zipfile.zip . -x ".*" -x "*/.*"

Bu, zip dosyanıza eklenmeyecek . ile başlayan dosyalarla sonuçlanır.

[email protected]:~/tmp$ ls -la
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmp
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmp
[email protected]:~/tmp$ zip -r zipfile.zip . -x .*
adding: .tmp/ (stored 0%)
adding: tmp/ (stored 0%)
[email protected]:~/tmp$ zip -r zipfile.zip . -x ".*" -x "*/.*"
updating: tmp/ (stored 0%)
    
verilen cevap Rinzwind 27.08.2011 21:17
8

Bu, tümünü içerir. " dizinler, alt dizinler ve "." dizin içindeki dosyalar veya dizinler ... Esasen ilk cevap ancak en üst seviyeyi içerir. Dosyalar.

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip [email protected]
    
verilen cevap cosimnot 01.11.2012 04:19
8

ile başlayan tüm klasörleri hariç tutan örnek. :

tar cvpzf folder.tgz folder/ --exclude '.*'

Daha iyi sıkıştır ancak daha yavaş:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
    
verilen cevap Tigrouzen 21.05.2014 18:51
5

Doğru yöntem:

zip -r zipfile.zip directory -x directory/.*
    
verilen cevap Rômulo Neves 08.05.2014 18:49
4

Bazı dosya uzantılarını hariç tutarak dirsekleri sıkıştırırken:

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"
    
verilen cevap K-Gun 08.12.2014 18:49
3

Gizli klasörler ve dizindeki dosyalar olmadan:

zip -r zipfile.zip directory/*

dizini: % Co_de%

$ zip -r zipfile.zip directory/*
adding: directory/src/ (stored 0%)
adding: directory/src/Work.file (stored 0%)
adding: directory/test.file (stored 0%)
    
verilen cevap Umanshield 15.02.2017 09:45

Etiketlerdeki diğer soruları oku