Eu definitivamente estou fazendo algo errado, mas não consigo entender isso. Quando executo rm -rf
nos diretórios através de find
, recebo um No such file or directory
, mas isso não acontece quando eu o faço manualmente. Assumindo a seguinte árvore de diretórios:
[~]$ mkdir -p blueprints/blog
[~]$ find
.
./blueprints
./blueprints/blog
Eu crio diretórios e adiciono arquivos a eles:
[~]$ mkdir ./blueprints/blog/__pycache__ ./blueprints/__pycache__ ./__pycache__
[~]$ touch ./blueprints/blog/__pycache__/dummy.pyc ./__pycache__/dummy.pyc
Tenho certeza de que as tenho:
[~]$ find . -type d -name '__pycache__'
./blueprints/blog/__pycache__
./blueprints/__pycache__
./__pycache__
Mas removê-los faz com que o documento seja impresso:
[~]$ find . -type d -name '__pycache__' -exec rm -rf {} \;
find: ‘./blueprints/blog/__pycache__’: No such file or directory
find: ‘./blueprints/__pycache__’: No such file or directory
find: ‘./__pycache__’: No such file or directory
Eles são removidos, mas o que está acontecendo lá?
Fazer isso de uma maneira diferente não provoca o erro:
[~]$ mkdir ./blueprints/blog/__pycache__ ./blueprints/__pycache__ ./__pycache__
[~]$ touch ./blueprints/blog/__pycache__/dummy.pyc ./__pycache__/dummy.pyc
[~]$ find . -type d -name '__pycache__' -exec echo rm -rf {} \; | sh
Por que encontrar um relatório desse erro? Tanto quanto sei se -exec
está presente, a ação -print
não é invocada (foi o que desconfiei primeiro).
Eu repliquei o acima usando tanto encontrar 4.6.0 e encontrar 4.5.11