fish
é um dos poucos shells em que esse {}
precisa ser citado .
Então, com esse shell, você precisa:
find . -type f -name '*.c' -exec chmod 644 '{}' +
Quando não é citado, {}
se expande para um argumento vazio, então o comando se torna o mesmo que:
find . -type f -name '*.c' -exec chmod 644 '' +
E find
reclama da falta de {}
(ou ;
como +
é reconhecido apenas como o -exec
terminator ao seguir {}
).
Com a maioria dos outros shells, você não precisa das aspas em torno de {}
.