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