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% .