Como outros já disseram, o -exec do find precisa ser finalizado. No entanto, sugiro usar + em vez de \; . Isso funciona apenas para alguns comandos, mas usar + criará e executará um comando muito mais eficiente.
Por exemplo, se você tiver três arquivos ( a , b e c ) em um diretório e executar find -exec echo {} \; , ele será executado:
echo a
echo b
echo c
No entanto, se você usar find -exec echo {} + , ele selecionará dinamicamente quantos argumentos o ambiente suportar (há um limite) e, como xargs , os vincula ... Então, o que é realmente executado é:
echo a b c
Como eu disse antes, isso só funcionará se o seu comando suportar vários arquivos por vez. chmod é um desses. Você pode ver a página man chmod :
SYNOPSIS
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
As reticências em FILE... significam que pode demorar mais de um arquivo.
Então, encadear todos eles juntos significa que executamos muito menos instâncias de chmod , o que é bom porque há uma grande sobrecarga (em pequenas operações como essa) para dar um novo comando.
Em resumo, usar + é mais rápido.