Um loop for
faz a iteração em uma lista estática , sempre. Portanto, o corpo do loop em sua pergunta não começará a ser executado até que os itens sobre os quais ele será iterado sejam completamente especificados. Estes não serão completamente especificados até que o comando find
tenha terminado a execução.
Existem vários problemas com o seu comando, e a maioria é abordada pela pergunta " Por que o loop é sobre a má prática de saída do find? ".
Em geral, é melhor ter find
agindo como um gerador de nome de caminho para um script interno:
find ~+ -type f \( -iname data.tmp -o -iname data.bak \) -exec sh -c '
for pathname do
# process "$pathname" here
done' sh {} +
Desta forma, você não precisa se preocupar sobre como os nomes de caminho que find
dá ao loop são delimitados (isso manipulará facilmente nomes de caminho contendo espaços e novas linhas, etc.)
Relacionados: