Hogyan hozhatok létre egy teljes könyvtár zip archívumát terminál nélkül rejtett fájlok nélkül?

189

Van egy projektem, amelyben rejtett mappák / fájlok vannak. Szeretnék létrehozni egy zip-archívumot, de az archívumban nem lehet rejtett mappák / fájlok. Ha a rejtett mappában lévő fájlokat nem rejtették el, akkor azokat sem kell szerepeltetni.

Tudom, hogy ilyen könyvtár zip archívumát hozhatom létre:

zip -r zipfile.zip directory

Azt is tudom, hogy kizárhatom a fájlokat a -x opcióval, ezért úgy gondoltam, ez működhet:

zip -r zipfile.zip directory -x .*

Nem működött. Minden rejtett könyvtár még mindig a zip-fájlban volt.

    
készlet Martin Thoma 27.08.2011 20:01
forrás

8 válasz

98

Ez a rejtett fájlokat nem tartalmazza a titkos könyvtárakban is:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@
    
válasz adott arrange 27.08.2011 21:27
forrás
69

Először is, ha nincs telepítve a zip, telepítse először a következőket:

sudo apt-get install zip

Akkor egyszerűen létrehozni egy zip fájlt:

zip -r compressed_filename.zip foldername

Ha el szeretné zárni a rejtett fájlokat:

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@
    
válasz adott M A K Ripon 11.08.2015 08:28
forrás
52

Add hozzá" -ot a.* -ra (egyébként a shell kiterjeszti a.* -ot az aktuális könyvtárban lévő pont fájlokra), és kizárja a rejtett fájlokat az alkönyvtárakban:

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

Ez azt eredményezi, hogy a. -al kezdődő fájlokat nem kell hozzáadni a zip-fájlodhoz.

rinzwind@discworld:~/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
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x .*
adding: .tmp/ (stored 0%)
adding: tmp/ (stored 0%)
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x ".*" -x "*/.*"
updating: tmp/ (stored 0%)
    
válasz adott Rinzwind 27.08.2011 21:17
forrás
8

Ez az összes "." könyvtárakat, alkönyvtárakat és "." fájlok vagy könyvtárak a könyvtárakban ... Lényegében az első válasz, de magában foglalja a legmagasabb szintű "." fájlokat.

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@
    
válasz adott cosimnot 01.11.2012 04:19
forrás
8

Példa az összes kezdődő mappa kizárására. :

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

Jobb tömörítés, de lassabb:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
    
válasz adott Tigrouzen 21.05.2014 18:51
forrás
5

A helyes módszer:

zip -r zipfile.zip directory -x directory/.*
    
válasz adott Rômulo Neves 08.05.2014 18:49
forrás
4

Míg a zipersorok bizonyos fájlkiterjesztést nem tartalmaznak:

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"
    
válasz adott K-Gun 08.12.2014 18:49
forrás
3

Rejtett mappák és fájlok a könyvtárban:

zip -r zipfile.zip directory/*

könyvtárban: |── .git │   ├── src │   └── Work.file ├── .test │   └── .file └── test.file

$ zip -r zipfile.zip directory/*
adding: directory/src/ (stored 0%)
adding: directory/src/Work.file (stored 0%)
adding: directory/test.file (stored 0%)
    
válasz adott Umanshield 15.02.2017 09:45
forrás