find… -exec command não executado em todos os arquivos encontrados

1

Como é que este comando:

find . -name \*.css -o -name \*.php -type f

me dá uma lista de todos os arquivos * .css e * .php MAS adicionando a opção 'exec':

find . -name \*.css -o -name \*.php -type f -exec chmod 664 {} \;

altera apenas as permissões de arquivo dos arquivos *.php e não o *.css ?

NOTA: Estou usando o Amazon EC2 Linux.

    
por J. Chin 19.02.2013 / 18:49

1 resposta

5

Você entendeu mal as ações AND / OR.

find . \( -name \*.css -o -name \*.php \) -type f -exec chmod 664 {} \;

find tenta descobrir se uma expressão é verdadeira ou falsa. Se o lado esquerdo de um OR já é verdadeiro, então não é necessário executar o lado direito. Sua abordagem funcionaria se o OR tivesse prioridade maior que o E, mas esse não é o caso.

    
por 19.02.2013 / 18:55