Graças a resposta que obtive em uma de minhas perguntas , descobri outra solução. Então, para ser completamente completo, aqui está uma solução fazendo uso de find :
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
E se você quiser excluir possíveis pastas .git dentro (sub) + pasta:
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
O último também pode ser alcançado por meio de:
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Bastante útil se você puder usar as outras técnicas de filtragem de find , por exemplo data de modificação, permissões,…
(Como os nomes de arquivo geralmente bem formados são assumidos, caso contrário, você precisará usar bytes nulos como separadores, o que pode significar -print0 para find e --null para tar se suportado.)