Назад | Перейти на главную страницу

find… -exec команда не выполняется для всех найденных файлов

Как получилась эта команда:

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.

Вы неправильно понимаете действия И / ИЛИ.

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

find пытается выяснить, является ли выражение истинным или ложным. Если левая часть ИЛИ уже истинна, то нет необходимости выполнять правую часть. Ваш подход будет работать, если OR имеет более высокий приоритет, чем AND, но это не так.