'find' с '-o' и '-exec chown' работает не так, как ожидалось

Я пытаюсь запустить следующее:

find . -user user_name -o -group user_group -exec chown root. {} \; 

Но после запуска команды он не изменяет права собственности на какие-либо файлы. Если я запускаю без -exec, он создает список всех файлов, которые, как я ожидаю, будет правильно изменен.

Если я использую:

 find . -user user_name -exec chown root. {} \; find . -group user_group -exec chown root. {} \; 

Файлы обновляются, как ожидалось. Я вижу на странице man:

 expr1 -o expr2 Or; expr2 is not evaluated if expr1 is true. expr1 -or expr2 Same as expr1 -o expr2, but not POSIX compliant. 

Тем не менее, файлы принадлежат user_name:user_group . Первый случай должен оценивать true и запускать команду exec, если я не понимаю что-то здесь. Может кто-нибудь объяснить, почему это работает именно так?

Некоторая информация о системе, если необходимо:

find (GNU findutils) 4.4.2 Выпуск CentOS 6.8 (Final)

  • Корень не может изменять разрешение или право собственности на файл
  • Я хочу изменить разрешения для всех папок / файлов, исключая некоторые из них
  • Кажется, что chown разрешено не root-пользователю
  • Нет драйверов после изменения владельца usr Linux Mint
  • Смешение пулов на монетном дворе
  • Измените право собственности на файл у пользователя на другого пользователя, который первый пользовательский контроль
  • Создать файл в папке: разрешение отклонено
  • Как вернуть команду chown?
  • One Solution collect form web for “'find' с '-o' и '-exec chown' работает не так, как ожидалось”

    Логические операторы в синтаксисе find имеют более низкий приоритет и в вашем примере -o делит -user user_name и -group user_group -exec chown root. {} \; -group user_group -exec chown root. {} \; ,

    Проверьте следующее:

     find . -user user_name -exec chown root. {} \; -o -group user_group -exec chown root. {} \; 

    Чтобы избежать дублирования, используйте круглые скобки для оценки двух тестовых выражений вместе:

     find . \( -user user_name -o -group user_group \) -exec chown root. {} \; 
    Linux и Unix - лучшая ОС в мире.