find -delete % flag funciona de maneira semelhante a rmdir ao excluir diretórios. Se o diretório não estiver vazio quando for alcançado, ele não poderá ser excluído.
Você precisa esvaziar o diretório primeiro. Como você está especificando -type d , find não fará isso por você.
Você pode resolver isso executando dois passos: primeiro, exclua tudo nos diretórios denominados __pycache__ e exclua todos os diretórios denominados __pycache__ :
find ~ -path '*/__pycache__/*' -delete
find ~ -type d -name '__pycache__' -empty -delete
Um pouco menos rigorosamente controlado, mas em uma única linha:
find ~ -path '*/__pycache__*' -delete
Isso excluirá qualquer coisa da sua casa que tenha __pycache__ como parte de seu caminho.