Question Comment créer une archive zip de tout un répertoire via un terminal sans fichiers cachés?


J'ai un projet avec beaucoup de dossiers / fichiers cachés. Je veux créer une archive zip, mais l'archive ne devrait pas contenir de fichiers / dossiers cachés. Si les fichiers d'un dossier caché ne sont pas masqués, ils ne doivent pas non plus être inclus.

Je sais que je peux créer une archive zip d'un répertoire comme celui-ci:

zip -r zipfile.zip directory

Je sais aussi que je peux exclure des fichiers avec l'option -x, alors j'ai pensé que cela pourrait fonctionner:

zip -r zipfile.zip directory -x .*

Ça n'a pas marché. Tous les répertoires cachés étaient toujours dans le fichier zip.


189
2017-08-27 18:01


origine




Réponses:


Cela exclut également les fichiers cachés dans les répertoires non masqués:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@

98
2017-08-27 19:27



Merci pour votre réponse. La commande (find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@) est plus long que prévu, mais cela fonctionne bien. Les sous-répertoires sont également inclus, donc +1 et une réponse acceptée :-) - Martin Thoma


Tout d'abord, si vous n'avez pas installé zip, installez-le d'abord comme suit:

sudo apt-get install zip

Ensuite, pour créer simplement un fichier zip:

zip -r compressed_filename.zip foldername

Si vous souhaitez exclure les fichiers cachés:

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@

67
2017-08-11 06:28



Merci de votre effort pour aider un autre utilisateur Ubuntu. N'oubliez pas que le fait de déclarer à nouveau la réponse acceptée dans une nouvelle réponse ne fait qu'ajouter à l'encombrement et risque fort d'être signalé. - hmayag


Ajouter " au .* (sinon, votre coque se dilate .* aux fichiers de points dans le répertoire en cours), et également exclure les fichiers cachés dans les sous-répertoires:

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

Cela se traduira par des fichiers commençant par un . ne pas être ajouté à votre fichier zip.

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%)

52
2017-08-27 19:17



Je ne pense pas que votre dernière déclaration est correcte. .* serait élargi par la coquille. - hammar
Je pense que c'est probablement correct mais je l'ai enlevé (pas sûr) :) - Rinzwind
cela n'a pas fonctionné. Les répertoires .svn ont été ajoutés - Martin Thoma
@moose Le modèle d'exclusion correspond au chemin complet, pas seulement au nom de la base de fichier, vous devez donc exclure */.* aussi bien que .* (*/ correspond à toute séquence de répertoires non vide). - Gilles
Cela fonctionne sans rien changer! Meilleure réponse. - Whitecat


Celui-ci comprend tout "." répertoires, sous-répertoires et "." fichiers ou répertoires dans des répertoires ... Essentiellement la première réponse, mais comprend le niveau supérieur "." des dossiers.

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@

8
2017-11-01 03:19





Exemple pour exclure tous les dossiers commençant par. :

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

Mieux compresser mais plus lentement:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'

8
2018-05-21 16:51





La méthode correcte serait:

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

5
2018-05-08 16:49



@downvoter: Qu'est-ce qui ne va pas, cela semble fonctionner pour moi. - jobin
Même problème qu'avec La réponse originale de Rinzwind (maintenant corrigé): vous n'excluez pas les sous-répertoires. Et comme Rinzwind l'a noté, vous devez citer les caractères génériques, sinon le shell les développera. - Gilles


En compressant les répertoires à l'exclusion de certaines extensions de fichier:

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"

4
2017-12-08 17:49





Sans dossiers cachés et fichiers dans le répertoire:

zip -r zipfile.zip directory/*

annuaire: |── .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%)

3
2018-02-15 08:45