¿Cómo puedo crear un archivo comprimido de un directorio completo a través de un terminal sin archivos ocultos?

188

Tengo un proyecto con muchas carpetas / archivos ocultos. Quiero crear un archivo zip de él, pero en el archivo no debe haber ninguna carpeta / archivo oculto. Si los archivos en una carpeta oculta no están ocultos, tampoco deberían incluirse.

Sé que puedo crear un archivo zip de un directorio como este:

zip -r zipfile.zip directory

También sé que puedo excluir archivos con la opción -x, así que pensé que esto podría funcionar:

zip -r zipfile.zip directory -x .*

No funcionó. Todos los directorios ocultos todavía estaban en el archivo comprimido.

    
pregunta Martin Thoma 27.08.2011 - 20:01

8 respuestas

98

Esto también excluye archivos ocultos en directorios no ocultos:

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@
    
respondido por el arrange 27.08.2011 - 21:27
66

En primer lugar, si no tiene instalado, instale zip primero de la siguiente manera:

sudo apt-get install zip

Luego, simplemente para crear un archivo zip:

zip -r compressed_filename.zip foldername

Si desea excluir archivos ocultos:

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@
    
respondido por el M A K Ripon 11.08.2015 - 08:28
52

Agregue " al .* (de lo contrario, su shell expande .* a los archivos de puntos en el directorio actual) y también excluya los archivos ocultos en los subdirectorios:

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

Esto dará como resultado que los archivos que comiencen con un . no se agreguen a su archivo comprimido.

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%)
    
respondido por el Rinzwind 27.08.2011 - 21:17
8

Este incluye todos "." directorios, subdirectorios y "." archivos o directorios dentro de directorios ... Esencialmente la primera respuesta, pero incluye el nivel superior "." archivos.

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@
    
respondido por el cosimnot 01.11.2012 - 04:19
8

Ejemplo para excluir todas las carpetas que comienzan con. :

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

Mejor compresión pero más lenta:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
    
respondido por el Tigrouzen 21.05.2014 - 18:51
5

El método correcto sería:

zip -r zipfile.zip directory -x directory/.*
    
respondido por el Rômulo Neves 08.05.2014 - 18:49
4

Al comprimir directorios sin incluir alguna extensión de archivo:

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

Sin carpetas y archivos ocultos en el directorio:

zip -r zipfile.zip directory/*

directorio: |── .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%)
    
respondido por el Umanshield 15.02.2017 - 09:45

Lea otras preguntas en las etiquetas