Existem algumas razões possíveis para isso.
1)
Você disse para excluir apenas os diretórios ( -type d
), e esses diretórios ainda têm arquivos dentro deles.
2)
Seus diretórios contêm apenas outros diretórios; portanto, -type d
eles resolverão o problema do conteúdo. No entanto, você está usando o OS-X, que é amplamente baseado no FreeBSD, e o FreeBSD, find
por padrão, processará o diretório antes de seu conteúdo.
No entanto, -depth
existe a opção de resolver esse problema, informando find
para processar o diretório após seu conteúdo.
find ~ -name __pycache__ -type d -ls -delete -depth
Esse problema não existe no linux porque a -delete
opção habilita implicitamente -depth
.
FreeBSD man 1 find
:
-depth Always true; same as the non-portable -d option. Cause find to
perform a depth-first traversal, i.e., directories are visited in
post-order and all entries in a directory will be acted on before
the directory itself. By default, find visits directories in
pre-order, i.e., before their contents. Note, the default is not
a breadth-first traversal.
GNU man 1 find
:
-depth Process each directory's contents before the directory itself. The -delete
action also implies -depth.
find ~ -path '*/__pycache__*' -delete
, ou provavelmentefind ~ -path '*/__pycache__/*' -o -name __pycache__ -delete
estar seguro.