find ... -exec 命令未对找到的所有文件执行

J. *_*hin 1 linux find amazon-ec2

这个命令怎么来的:

find . -name \*.css -o -name \*.php -type f
Run Code Online (Sandbox Code Playgroud)

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

find . -name \*.css -o -name \*.php -type f -exec chmod 664 {} \;
Run Code Online (Sandbox Code Playgroud)

仅更改文件的文件权限,*.php而不更改*.css?

注意:我使用的是 Amazon EC2 Linux。

Hau*_*ing 5

您误解了 AND / OR 操作。

find . \( -name \*.css -o -name \*.php \) -type f -exec chmod 664 {} \;
Run Code Online (Sandbox Code Playgroud)

find 试图找出表达式是真还是假。如果 OR 的左侧已经为真,则无需执行右侧。如果 OR 的优先级高于 AND,则您的方法会起作用,但事实并非如此。