찾는 것보다 빠른 검색

찾는 것보다 빠른 검색

find. 보다 빨리 물건을 찾을 수 있는 방법이 있나요 ? 나는 지금/하고 있었다 :-

$sudo find / -perm +4000

하지만 필요한 정보를 찾는 데는 오랜 시간이 걸립니다. 그리고 특정 권한 비트가 설정된 대부분의 파일은 정적이거나 동적이 아니라는 것을 알고 있습니다.

나는 노력했다

[$] sudo locate --all / -perm +4000                                                                                               
locate: invalid option -- 'p'

그러나 보시다시피 실패했습니다. 어떤 아이디어라도 찾기를 사용하여 동일한 작업을 수행할 수 있습니다.

공유하는 것은 /usr/bin/locate심볼릭 링크되어 있고, /etc/alternatives/locate그 다음에는 심볼릭 링크되어 있습니다./usr/bin/mlocate

답변1

불행하게도 는 파일 권한을 색인화하지 않으므로 이 기능을 제공하는 찾기 구현을 찾지 않는 한(또는 직접 확장 ) mlocate을 사용하여 파일 시스템을 검색해야 합니다 .findmlocate

답변2

@shirish가 언급했듯이 mlocate는 파일 권한을 색인화하지 않습니다. 하지만 여전히 몇 가지 제안 사항이 있습니다.

첫째, find manual에서 -perm +mode는 더 이상 사용되지 않으므로 대신 -perm /mode를 사용해야 합니다.

-perm +모드

모드가 설정된 권한 비트를 사용하여 파일을 검색하는 더 이상 사용되지 않는 오래된 방법입니다. 대신 -perm /mode를 사용해야 합니다. 기호 모드에서 '+' 구문을 사용하려고 하면 놀라운 결과가 나올 것입니다. 예를 들어 '+u+x'는 유효한 기호 모드(+u,+x, 즉 0111과 동일)이므로 -perm +mode로 평가되지 않고 대신 정확한 모드 지정자 -perm mode로 평가됩니다. 실행 비트가 설정된 파일 대신 정확한 권한 0111을 가진 파일과 일치합니다. 이 문단이 혼란스럽다면 혼자가 아닙니다. 그냥 -perm /mode를 사용하세요. 이 형식의 -perm 테스트는 POSIX 사양에서 기호 모드의 일부로 선행 '+'를 해석해야 하므로 더 이상 사용되지 않으며 대신 '/'를 사용하도록 전환했습니다.

-perm /모드

파일에 대해 권한 비트 모드가 설정되어 있습니다. 이 형식에서는 기호 모드가 허용됩니다. 기호 모드를 사용하는 경우 'u', 'g' 또는 'o'를 지정해야 합니다. 몇 가지 예시적인 예는 예 섹션을 참조하세요. 모드에서 권한 비트가 설정되지 않은 경우 이 테스트는 모든 파일과 일치합니다(여기서 아이디어는 -perm -000의 동작과 일치한다는 것입니다).

둘째, 찾기 속도를 높일 수 있습니다. 그렇게 하려면 최대한 구체적이어야 합니다. 예를 들어:

find /some/path ...

전체 루트 디렉터리(/)를 검색하는 대신 검색할 경로(/some/path)를 지정했기 때문에 검색 시간이 단축됩니다.

마지막으로, 검색 중에 검사하고 싶지 않은 시스템 폴더를 제외할 수 있습니다. 예를 들어:

 find /some/path -not \( -path /excluded/path -prune \) -name *.js

관련 정보