Использование 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 {} +