Использование find для поиска файлов, не принадлежащих ПОЛЬЗОВАТЕЛЮ или ГРУППЕ

Мне нужно найти файлы и папки в CentOS 7, где они либо не принадлежат пользователю, либо не принадлежат группе.

У меня есть 3 тестовых каталога:

      root:root test1
root:group test2
user:root test3

Мне нужно иметь возможность найти все 3 каталога, поэтому я могу выбрать пользователя: группа в одной команде поиска.

Я пробовал это:

      find . ! -user user -or ! -group group
find . ! \( -user user -or -group group \)

Но ни один из них не работает. Я что-то неправильно понял?

Я провел дополнительное тестирование и, используя первый пример: find . ! -user user -or ! -group group -print0Я могу получить результаты только от test1каталог

1 ответ

не (X или Y) и (не X или не Y) — разные вещи, отрицание не есть дистрибутивная операция. Вам действительно нужны круглые скобки, так как -o имеет более низкий приоритет, чем -a , подразумеваемый конъюнкцией основных элементов, но также оба предиката внутри должны быть инвертированы.

      find . \( ! -user user -o ! -group group \) -exec chown user:group {} +
Другие вопросы по тегам