find… -exec命令不会在所有find的文件上执行

怎么这个命令:

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

给我所有* .css和* .php文件的列表,但添加'exec'选项:

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

只更改*.php文件的文件权限而不是*.css

注意:我正在使用Amazon EC2 Linux。

你误解了AND / OR行为。

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

find试图找出expression式是真是假。 如果OR的左侧已经是真的,则不需要执行右侧。 如果“或”的优先级高于“与”但事实并非如此,那么你的方法就行得通。