찾기 명령의 진행 상황을 어떻게 저장합니까?

찾기 명령의 진행 상황을 어떻게 저장합니까?

나는 큰 파일 디렉토리 트리를 가지고 있습니다. 나는 종종 이 find명령을 사용하여 이 트리에서 무언가를 찾습니다. 재부팅 후 처음에는 시간이 좀 걸리지만 이후 사용은 거의 즉시 이루어집니다. find재부팅 후 다시 생성해야 하는 일부 내부 데이터 구조가 사용되는 것 같습니다 .

재부팅 사이에 이 데이터 구조를 보존할 수 있는 방법이 있습니까?

추가 정보:

  • 디렉토리 트리의 루트는 항상 동일하지만 항상 마운트되지는 않는 다른 드라이브에 있습니다.
  • 약 50000개의 파일과 약 2000개의 디렉토리가 있습니다.
  • 나는 -iregex옵션 을 사용한다find

답변1

find두 번째 명령을 매우 빠르게 만드는 것은 커널 파일 시스템 캐시입니다 . 내가 아는 한, 파일 시스템 캐시를 덤프하고 복원할 수 있는 방법은 없습니다. 어쨌든 캐시를 먼저 디스크에 쓴 다음 다시 읽는 것이 find명령을 다시 실행하는 것보다 느릴 것으로 예상됩니다.

답변2

디렉토리 트리가 비교적 정적인 경우(즉, 파일 및 디렉토리가 거의 생성되거나 삭제되지 않는 경우) 대신 를 find사용해 볼 수 있습니다 locate.

locate(1)                 General Commands Manual      locate(1)

NAME
       locate - find files by name

SYNOPSIS
       locate [OPTION]... PATTERN...

DESCRIPTION
       locate reads one or more databases prepared by updatedb(8)
       and writes file names matching at least one of the
       PATTERNs to standard output, one per line.

       If --regex is not specified, PATTERNs can contain globbing characters.
       If any PATTERN contains no globbing characters,
       locate behaves as if the pattern were *PATTERN*.

       By  default, locate does not check whether files found in database
       still exist (but it does require all parent directories to exist
       if the database was built with --require-visibility no).
       locate can  never  report  files created after the most recent
       update of the relevant database.

관련 정보