Есть ли способ найти вещи быстрее, чем find
. Я делаю/делал :-
$sudo find / -perm +4000
Но поиск необходимой информации занимает много времени, и я знаю, что большинство файлов, для которых установлен этот конкретный бит разрешения, будут статическими, а не динамическими.
Я пытался
[$] sudo locate --all / -perm +4000
locate: invalid option -- 'p'
но как видно не удалось. Есть идеи, как я могу использовать locate, чтобы сделать то же самое.
Просто поделиться /usr/bin/locate
- это символическая ссылка, /etc/alternatives/locate
которая в свою очередь символическая ссылка на/usr/bin/mlocate
решение1
К сожалению, mlocate
не индексирует права доступа к файлам, поэтому вам придется прибегнуть к сканированию файловых систем с помощью find
, если только вы не найдете реализацию locate, которая поддерживает эту функциональность (или не расширите ее mlocate
самостоятельно).
решение2
Как упомянул @shirish, mlocate не индексирует права доступа к файлам. Но все же у меня есть несколько предложений для вас:
Во-первых, согласно руководству по поиску, опция -perm +mode устарела, поэтому вместо нее следует использовать -perm /mode.
-perm +режим
Устаревший, старый способ поиска файлов с любым из битов разрешений в установленном режиме. Вместо этого следует использовать -perm /mode. Попытка использовать синтаксис '+' с символическими режимами даст неожиданные результаты. Например, '+u+x' является допустимым символическим режимом (эквивалентным +u,+x, т. е. 0111) и поэтому не будет оцениваться как -perm +mode, а вместо этого как точный спецификатор режима -perm mode, и поэтому он сопоставляет файлы с точными разрешениями 0111 вместо файлов с любым установленным битом выполнения. Если вы нашли этот абзац запутанным, вы не одиноки - просто используйте -perm /mode. Эта форма теста -perm устарела, поскольку спецификация POSIX требует интерпретации начального '+' как части символического режима, и поэтому мы перешли на использование '/' вместо этого.
-perm /режим
Для файла установлены любые биты разрешений mode. Символические режимы принимаются в этой форме. Вы должны указать 'u', 'g' или 'o', если используете символический режим. См. раздел ПРИМЕРЫ для некоторых иллюстративных примеров. Если в режиме не установлены биты разрешений, этот тест соответствует любому файлу (идея здесь в том, чтобы соответствовать поведению -perm -000).
Во-вторых, можно попытаться ускорить поиск: для этого нужно быть максимально конкретным. Например:
find /some/path ...
сократит время поиска, так как вы указали путь, по которому нужно искать (/some/path), вместо поиска по всему корневому каталогу (/)
И последнее, вы можете исключить системные папки, которые вы не хотите сканировать во время поиска. Например:
find /some/path -not \( -path /excluded/path -prune \) -name *.js