検索コマンドの進行状況をどのように保存しますか?

検索コマンドの進行状況をどのように保存しますか?

私は大きなファイルディレクトリツリーを持っています。私はしばしばこのfindコマンドを使ってこのツリーで何かを見つけます。再起動後、最初は少し時間がかかりますが、その後の使用はほとんどすぐに行われます。find再起動後に再生成する必要があるいくつかの内部データ構造が使用されているようです。

再起動の間にこのデータ構造を保存する方法はありますか?

追加情報:

  • ディレクトリツリーのルートは常に同じですが、常にマウントされていない別のドライブにあります。
  • 約50000個のファイルと約2000個のディレクトリがあります。
  • 私は-iregexオプションを使うfind

答え1

find2番目のコマンドを非常に高速にするのはカーネルファイルシステムキャッシュです。私が知っている限り、ファイルシステムキャッシュをダンプして復元する方法はありません。とにかく、キャッシュを最初にディスクに書き込んでから再読み込みすることは、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.

関連情報