Bem, no que diz respeito à sintaxe -exec
, você pode fazer como muitas pessoas, desistir e usar xargs
:
find . -type f | xargs chown username
(ou a versão de arquivos com espaços e outras que não fazem sentido neles)
find . -type f -print0 | xargs -0 chown username
Ou, para tentar lembrar a coisa certa a fazer com o ponto-e-vírgula, o que você precisa detalhar é que você está usando um ponto-e-vírgula para terminar o comando que -exec
é correndo, e você tem que escapar o ponto-e-vírgula porque tem um significado especial para bash
. É por isso que é ponto e vírgula de barra invertida. Você parece ter a parte de substituição {}
bem.
Quanto a matar arquivos e assim por diante, se você está executando algo grande e perigoso como o que você está falando, primeiro faça isso:
find . -type f -exec echo chown username {} \;
e revise os resultados. Este é basicamente um "dry run", onde você está vendo os comandos que seriam executados se você permitir. Definitivamente, uma boa prática. Não vai ajudar com o problema .*
, mas você não sabe fazer isso agora. :)