如何保存“查找”命令的进度?

如何保存“查找”命令的进度?

我有一个很大的文件目录树。我经常使用该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.

相关内容