Para pular as pastas ./path/to/~dir , mas não a ./path/to/~dir/subdir , como outras pessoas já disseram, você pode fazer:
find . ! -name '~*' -type d -print
Se você também não quiser descer para essas pastas (e encontrar pastas adicionais), faça o seguinte:
find . -name '~*' -prune -o -type d -print
Isso indica ao find para remover as ramificações com raiz nos diretórios cujo nome começa com ~ .
Isso deve ser principalmente equivalente funcionalmente ao seu:
find . -type d ! -path '*/~*'
Só que o último não faz poda, por isso ainda procura dentro desses diretórios, mesmo que não imprima nenhum deles, por isso é menos eficiente.
¹ há alguma diferença em que o primeiro * em */~* pode não corresponder aos nomes de arquivo que contêm caracteres inválidos