Você usou -print
antes de -type d
, por isso find
imprime todas as coisas que não satisfizeram a primeira expressão.
Você deseja trocá-los:
find . -path '*/.git' -prune -o -type d -print
ou usando somente predicado, para que você possa omitir -print
:
find . ! \( -path '*/.git' -o -path '*/.git/*' \) -type d
Observe também que você só precisa usar um asterisco */.git
, o asterisco duplo **
não tem um significado especial para find
padrão de correspondência. E você pode torná-lo mais simples, mais portátil e um pouco mais rápido usando -name
em vez de -path
:
find . -name .git -prune -o -type d -print