Encontre diretórios e arquivos com permissões diferentes de 775/664

16

Estou movendo um site de um servidor para outro e o Git não armazena metadados como permissões de arquivos. Eu preciso encontrar os diretórios e arquivos que não são 775/664, respectivamente.

Neste momento, estou usando essa engenhoca empedrada:

$ find . -type d -exec ls -la {} \; | grep ^d | grep -v ^drwxrwxr-x
$ find . -type f -exec ls -la {} \; | grep -v ^d | grep -v ^-rw-rw-r-- | grep -v '.git'

Embora isso funcione, eu sinto que é bastante hacky. Existe uma maneira melhor de fazer isso, talvez de uma maneira canônica, ou eu deveria ser apenas hacky?

Isso está sendo executado em uma versão recente do Ubuntu com ferramentas GNU no Bash.

    
por dotancohen 13.07.2014 / 09:13

2 respostas

29

Use o teste -perm para find em combinação com -not :

find -type d -not -perm 775 -o -type f -not -perm 664
  • -perm 775 corresponde todos os arquivos com permissões exatamente iguais a 775 . -perm 664 faz o mesmo com 664 .
  • -not (NOT booleano) nega o teste que segue, então ele corresponde exatamente ao oposto do que teria: neste caso, todos os arquivos que não possuem as permissões corretas.
  • -o (OR booleano) combina dois conjuntos de testes juntos, combinando quando um deles faz: ele tem a precedência mais baixa, então divide nossos testes em dois grupos distintos. Você também pode usar parênteses para ser mais explícito. Aqui, combinamos diretórios com permissões que não são 775 e arquivos comuns com permissões que não são 664 .

Se você quisesse dois comandos separados para diretórios e arquivos, basta cortá-lo pela metade em -o e usar cada metade separadamente.

    
por 13.07.2014 / 09:26
2

Não tenho ideia do que seu código estava tentando alcançar. Normalmente, o motivo para localizar arquivos e diretórios com permissões incorretas é alterá-los.

Então é isso que eu estou usando com sucesso no Ubuntu 16.04

find \! -perm 775 -type d -exec chmod 775 {} \;
find \! -perm 664 -type f -exec chmod 664 {} \;

Isso demonstra o! símbolo sendo escapado

    
por 22.03.2018 / 04:00