Когда я указываю пользователя в функции поиска на терминале:
Почему мне нужно написать /
, прежде чем я напишу -user ПРИМЕР?
пример:
find -user USERNAME
ничего не сделает, тогда как
find / -user USERNAME
Работает точно так, как задумано?
P.S: Если я использую две функции одну за другой:
find / -user USERNAME -group GROUPNAME
Найдет ли он файлы, принадлежащие как пользователю, так и группе, или файлы, принадлежащие пользователю или группе?
Я попытался найти ответы в документации и ничего не нашел, где я могу найти ответы на такие вопросы?
Учитывая, что вы используете Linux, вы, вероятно, используете GNU find. Это дает "." (текущий рабочий каталог), если не указан явный параметр каталога.
Утилита find
показывает только то, что она находит (на самом деле не сообщает вам, где она ищет ), так что вы, возможно, этого не заметили. Очевидно, в вашем текущем рабочем каталоге (или под ним) ничего нет, принадлежащего USERNAME
, но есть на компьютере. Когда вы указали ему в качестве параметра «/», find
просматривал весь компьютер, начиная с корневого уровня «/».
Что касается
find / -user USERNAME -group GROUPNAME
, find
обрабатывает его так, как если бы вы сказали, что
find / \( -user USERNAME -a -group GROUPNAME \)
POSIX объясняет это следующим образом:
Соединение основных цветов ; Оператор
И
подразумевается сопоставлением двух первичных или явным образом выражается необязательным оператором-a
. Второе выражение не должно оцениваться, если первое выражение ложно.
В вашей команде это основные параметры :
-user USERNAME
-group GROUPNAME
Дополнительная литература:
Итак, синтаксис:
find (начальный каталог) (действия и флаги)
Итак, вам нужно указать какой-то каталог, даже если это просто каталог /
. Это не по умолчанию /
find / start_dir -size +500 -atime +20 -print
Это начнется в start_dir
и будет искать все файлы, которые используйте 500 или более блоков, к которым не обращались за последние 20 дней