find . -depth -print0 | perl -0lne '
if ("$_/" =~ m{/Caches(/.*)}s && $1 !~ m{/Snapshots/}) {rmdir $_ or unlink $_}'
Se o seu find não for compatível com -print0 , você poderá substituí-lo por -exec printf '%s . perl' {} +
A idéia é imprimir a lista de arquivos terminados em NUL (como 0 é o único byte que não pode ocorrer em um caminho de arquivo) e usar a opção -n -0 with $_ para executar alguns código para cada um desses nomes de arquivos (com -depth definido para o nome do arquivo).
Com depth , os arquivos são impressos antes do diretório pai. Nós removemos apenas arquivos ou diretórios (assumindo que eles estão vazios, e é por isso que é importante processar a lista em /Caches/ order) se o caminho contiver /Snapshosts/ não seguido por %code% .