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