Antes de tudo, se você não tiver instalado o zip, instale-o primeiro da seguinte maneira:
Os princípios básicos da exclusão de arquivo ao criar um arquivo zip são centralizados em torno do -x
sinalizador, que é usado para excluir arquivos do arquivo que correspondem a um nome ou padrão específico. No mais básico, ficará assim:
zip archive.zip files -x "ExcludeMe"
O que significa que você pode excluir um único arquivo, digamos, com o nome "Nothanks.jpg"
zip archive.zip images/ -x "Nothanks.jpg"
Vamos cobrir alguns exemplos específicos em que isso é útil.
Excluir arquivos .DS_Store dos arquivos zip
Isso impedirá que os .DS_Store
arquivos de metadados do Mac, normalmente invisíveis, sejam incluídos em um arquivo zip, que são agrupados por padrão:
zip -r archivename.zip archivedirectory -x "*.DS_Store"
Se o diretório incluir subdiretórios, no entanto, você desejará usar outra variação desse comando para excluir os arquivos ds_store dos subdiretórios também:
zip -r archive.zip directory -x "*/\.DS_Store"
Nota: nem todos os shells exigem que as cotações para este comando funcionem corretamente, mas no shell bash (o padrão para OS X), você precisará usar as aspas para excluir com caracteres curinga e padrões.
Excluir tipos de arquivo específicos de um arquivo zip
Com curingas, você também pode excluir todos os arquivos de um determinado tipo, concentrando-se na extensão. Por exemplo, este comando compactará um diretório inteiro, menos os .jpg
arquivos:
zip -r archive.zip directory -x "*.jpg"
Isso pode ser modificado para qualquer extensão ou padrão de arquivo específico correspondente a um nome de arquivo.
Excluir o diretório .git ou .svn de um arquivo zip
Zip um diretório, menos .git
e seu conteúdo:
zip -r zipdir.zip directorytozip -x "*.git*"
Compacte uma pasta, sem incluir o .svn
diretório:
zip -r zipped.zip directory -x "*.svn*"
Excluir todos os arquivos ocultos de um arquivo zip
Desde padrões e curingas podem ser usados, você também pode excluir um ou todos os arquivos e pastas invisíveis que são feitas assim por ser prefixados com um período, se é um diretório como .svn
ou um arquivo individual como .bash_profile
ou .htaccess
.
zip -r archivename.zip directorytozip -x "*.*"
Ou, para excluir todos os arquivos invisíveis de todos os subdiretórios:
zip -r archive.zip directory -x "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@
) é mais longo que o esperado, mas funciona bem. Subdiretórios também estão incluídos, por isso +1 e uma resposta :-) aceito