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.