Isso também exclui arquivos ocultos em diretórios ocultos:
find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@
Eu tenho um projeto com muitas pastas / arquivos ocultos nele. Eu quero criar um arquivo zip dele, mas no arquivo não deve haver pastas / arquivos ocultos. Se os arquivos em uma pasta oculta não estiverem ocultos, eles também não devem ser incluídos.
Eu sei que posso criar um arquivo zip de um diretório como este:
zip -r zipfile.zip directory
Eu também sei que posso excluir arquivos com a opção -x, então achei que isso funcionaria:
zip -r zipfile.zip directory -x .*
Não funcionou. Todos os diretórios ocultos ainda estavam no arquivo zip.
Isso também exclui arquivos ocultos em diretórios ocultos:
find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@
Primeiro de tudo, se você não tiver instalado o zip, instale-o primeiro da seguinte forma:
sudo apt-get install zip
Depois, basta criar um arquivo zip:
zip -r compressed_filename.zip foldername
Se você deseja excluir arquivos ocultos:
find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@
Adicione "
ao .*
(caso contrário, seu shell expandirá .*
para os arquivos de ponto no diretório atual) e também excluirá arquivos ocultos em subdiretórios:
zip -r zipfile.zip . -x ".*" -x "*/.*"
Isso resultará em arquivos que começam com .
para não serem adicionados ao seu arquivo 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%)
Este inclui todos os "." diretórios, subdiretórios e "." arquivos ou diretórios dentro de diretórios ... Essencialmente, a primeira resposta, mas inclui o nível superior "." arquivos.
find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@
Exemplo para excluir todas as pastas que começam com. :
tar cvpzf folder.tgz folder/ --exclude '.*'
Melhor compactar, mas mais lento:
tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
O método correto seria:
zip -r zipfile.zip directory -x directory/.*
Enquanto fecha dirs excluindo alguma extensão de arquivo:
$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"
Sem pastas e arquivos ocultos no diretório:
zip -r zipfile.zip directory/*
diretório:
|── .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%)
Tags command-line zip