find ~ -type d '!' -exec test -d '{}/bar' ';' -print
... mas isso provavelmente não é exatamente o que você quer; para os diretórios de exemplo que você forneceu, ele mostrará:
/path/to/home
/path/to/home/web
/path/to/home/web/domain1.com
/path/to/home/web/domain1.com/public_html/bar
/path/to/home/web/domain2.com
/path/to/home/web/domain2.com/public_html
/path/to/home/web/domain3.com
/path/to/home/web/domain3.com/public_html/bar
/path/to/home/web/domain4.com
/path/to/home/web/domain4.com/public_html
i.e. ele lista o diretório every que não contém um subdiretório "bar", incluindo os próprios diretórios "bar" (a menos que contenham seus próprios subdiretórios de barras ...). Você provavelmente deseja adicionar uma restrição adicional, como listar apenas diretórios em uma determinada profundidade:
find ~ -type d -depth 3 '!' -exec test -d '{}/bar' ';' -print
ou com um certo nome:
find ~ -type d -name public_html '!' -exec test -d '{}/bar' ';' -print
... ambos imprimem:
/path/to/home/web/domain2.com/public_html
/path/to/home/web/domain4.com/public_html