A explicação do que o manual diz é isto:
Quando find
chegar a um diretório que corresponda à sua expressão -path
, -prune
evitará entrar nela. Então find
irá
/ ok, go inside
/home ok, go inside
/home/xxxx ok, go inside
/tmp don't go inside
/var ..etc...
Mas quando você usa -depth
, ele processa o interior dos diretórios antes dos próprios diretórios. Por isso, irá corresponder ao caminho quando for tarde demais:
/home/xxxx
/home ok, go inside (it already went)
/tmp/zzzz didn't match "-path /tmp", so it's ok
/tmp don't go inside (too late!)
/var ..etc...
/
Para resolver esse problema, você pode tentar:
-
Basta adicionar novas expressões
-path
com curingas. Isso tem a desvantagem de que esses subdiretórios serão percorridos de qualquer maneira, apenas não impressos (e sua passagem talvez desencadeie avisos)find ... \( -path './sys' -o -path './sys/*' -o -path './dev' -o -path './dev/*' ... \) -prune ...
-
Não enumere os diretórios para evitar, enumere os que serão impressos!
find /bin /boot /etc /home /lib ...