Altera as permissões de arquivos e diretórios, excluindo um diretório

0

Estou tentando alterar as permissões de arquivos e diretórios, excluindo um diretório. O que eu tenho é:

find ! -name test -exec chmod -R 700 {} \;

teste sendo o diretório que eu preciso excluir, enquanto os outros arquivos e diretórios precisam ter 700 permissões de acesso.

    
por user3434743 22.09.2014 / 21:34

1 resposta

2

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:

  1. -name test -prune : -prune , se os testes anteriores forem verdadeiros, e o arquivo atual for um diretório, pule-o, senão retorne false.
  2. -o -type d -exec chmod 700 {} \; : se -prune retornar falso, essas opções serão aplicadas (como -o é OR) e isso se aplica a chmod 700 se o arquivo for um diretório.
  3. -o -type f -execdir chmod 600 {} + : se ambos os testes acima retornarem false, aplique chmod 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.
por muru 22.09.2014 / 21:54