El comando find ... -exec no se ejecuta en todos los archivos encontrados

1

¿Cómo es que este comando:

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

me da una lista de todos los archivos * .css y * .php PERO agregando la opción 'exec':

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

solo cambia los permisos de los *.phparchivos y no el *.css?

NOTA: Estoy usando Amazon EC2 Linux.

J. Chin
fuente
gracias por ayudarme a marcar el texto del código, todavía estoy aprendiendo cómo publicar correctamente las preguntas aquí
J. Chin

Respuestas:

5

Usted malinterpreta las acciones AND / OR.

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

find intenta averiguar si una expresión es verdadera o falsa. Si el lado izquierdo de un OR ya es verdadero, entonces no es necesario ejecutar el lado derecho. Su enfoque funcionaría si OR tuviera mayor prioridad que AND, pero ese no es el caso.

Hauke ​​Laging
fuente