Para ignorar um diretório, você deve usar -prune
. Considere algo assim:
find . -name test -prune -o -type d -exec chmod 700 {} \; -o -type f -execdir chmod 600 {} +
Explicação:
-
-name test -prune
:-prune
, se os testes anteriores forem verdadeiros, e o arquivo atual for um diretório, pule-o, senão retorne false. -
-o -type d -exec chmod 700 {} \;
: se-prune
retornar falso, essas opções serão aplicadas (como-o
é OR) e isso se aplica achmod 700
se o arquivo for um diretório. -
-o -type f -execdir chmod 600 {} +
: se ambos os testes acima retornarem false, apliquechmod 600
, pois não é um diretório.execdir
é "um método muito mais seguro para invocar comandos", de acordo com a página de manual , que também dá as razões.